繁体   English   中英

获取PHP中从Java发送的标头和内容

[英]Get headers and content sent from Java in php

Java编码器向我发送一些数据(一些标头和图片的内容)。 看起来像这样:

436f 6e74 656e 742d 4c65 6e67 7468 3a20
3138 3830 0d0a 0d0a ffd8 ffe0 0010 4a46
4946 0001 0101 0060 0060 0000 ffdb 0043
0010 0b0c 0e0c 0a10 0e0d 0e12 1110 1318
281a 1816 1618 3123 251d 283a 333d 3c39
3338 3740 485c 4e40 4457 4537 3850 6d51
...

我试图用$queryHex=pack("H*", $query);来解析它$queryHex=pack("H*", $query); 其中$query = file_get_contents("php://input"); 当我尝试使用var_dump $queryHex我得到的是Co. @ enB.Lepth.18。而不是一些我认为是图片内容的不可读符号。 我也尝试设置编码( header('Content-Type: text/html; charset=utf-8'); ),结果仍然存在。 我做错了什么? 如何获得适当的数据?

更新 :根据他的API,他应该发送如下信息:

    POST /url_for_detect HTTP/1.1

    Content-Type: image/jpeg; boundary=-
   [DATA]

DATA是图片的内容。 但是那里有Content-length。 他说没有必要。 但是我仍然看不到那里的内容类型或获取数据。 请他向我发送他发送的查询。

您发布的字节包含。

Content-Length: 1880

FF D8 FF E0 00 10 4A 46 49 46 <-- the start of the JPEG file

正如@awons已经建议的那样。 询问发送者他发送给您的内容。

编辑

小的“ quick'n'dirty”代码将字节转换为二进制。

String content = "436f 6e74 656e 742d 4c65 6e67 7468 3a20"
        + "3138 3830 0d0a 0d0a ffd8 ffe0 0010 4a46"
        + "4946 0001 0101 0060 0060 0000 ffdb 0043"
        + "0010 0b0c 0e0c 0a10 0e0d 0e12 1110 1318"
        + "281a 1816 1618 3123 251d 283a 333d 3c39"
        + "3338 3740 485c 4e40 4457 4537 3850 6d51";

StringBuilder sb = new StringBuilder(content.replaceAll(" ", ""));
sb.delete(0, 48); // remove "Content-Length: 1880"
try (FileOutputStream fos = new FileOutputStream("content.jpg")) {
    while (sb.length() > 2) {
        fos.write(Integer.parseInt(sb.substring(0, 2), 16));
        sb.delete(0, 2);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM