1

我使用 Apache HTTP 库编写了一个 Java 应用程序,它将 HTTP POST 请求发送到网络服务器并打印响应。带有一些 StringBody 和 ByteArrayBody 的 MultipartEntity 被附加到 POST,然后被发送。在网络服务器上,一个 PHP 脚本会转储请求中包含的所有变量($_POST 和 $_FILES)

现在这是奇怪的部分:在本地测试 xampp 服务器上进行测试时,一切正常。字符串在 $_POST 中,字节在 $_FILES 中。但是当我在远程服务器上测试时,我只收到字符串并且字节已经消失了。

为什么会这样,我可以解决这个问题吗?这是由于服务器上的安全设置造成的吗?

Java客户端代码:

public HttpResponse send(URL url) throws IOException{
    DefaultHttpClient client = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url.toString());

    MultipartEntity ent = new MultipartEntity();
    ent.addPart("testString1", new StringBody("testValue1"));
    ent.addPart("testString2", new StringBody("testValue2"));
    ent.addPart("testString3", new StringBody("testValue3"));
    ent.addPart("testString4", new StringBody("testValue4"));
    ent.addPart("data", new ByteArrayBody(new byte[]{'a', 'b', 'c', 'd', 'e', 'f'}, "data"));

    httpPost.setEntity(ent);
    return client.execute(httpPost);
}

远程PHP代码:

<?php
    print_r($_POST);
    print_r($_FILES);
    $contents = "Data:\n";
    $contents .= print_r($_POST, true) . "\n";
    $contents .= print_r($_FILES, true) . "\n";
    file_put_contents ( "inputDump.txt" , $contents);
?>
4

0 回答 0