ByteArrayBody并不总是被服务器接受

时间:2013-08-13 19:16:50

标签: java php apache post

我使用Apache HTTP库编写了一个Java应用程序,它将HTTP POST请求发送到Web服务器并打印响应。带有一些StringBodies和ByteArrayBody的MultipartEntity会附加到POST,然后它会被发送。 在Web服务器上,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);
?>

0 个答案:

没有答案