我使用 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);
?>