Java发送POST数据(POST数据集但为空)

Java发送POST数据(POST数据集但为空),java,php,http-post,httpurlconnection,Java,Php,Http Post,Httpurlconnection,我正在尝试使用java发送POST数据。以下是我尝试使用的方法: public void doSubmit(String url, HashMap<String, String> data) throws Exception { URL siteUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection(); conn.setRequestMet

我正在尝试使用java发送POST数据。以下是我尝试使用的方法:

public void doSubmit(String url, HashMap<String, String> data) throws Exception {
    URL siteUrl = new URL(url);
    HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);

    DataOutputStream out = new DataOutputStream(conn.getOutputStream());

    Set keys = data.keySet();
    Iterator keyIter = keys.iterator();
    String content = "";
    for(int i=0; keyIter.hasNext(); i++) {
        Object key = keyIter.next();
        if(i!=0) {
            content += "&";
        }
        content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
    }
    System.out.println(content);
    out.writeBytes(content);
    out.flush();
    out.close();
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line = "";
    while((line=in.readLine())!=null) {
        System.out.println(line);
    }
    in.close();
}
public void doSubmit(字符串url、哈希映射数据)引发异常{
URL siteUrl=新URL(URL);
HttpURLConnection conn=(HttpURLConnection)siteUrl.openConnection();
conn.setRequestMethod(“POST”);
连接设置输出(真);
conn.setDoInput(真);
DataOutputStream out=新的DataOutputStream(conn.getOutputStream());
Set keys=data.keySet();
迭代器keyIter=keys.Iterator();
字符串内容=”;
for(int i=0;keyIter.hasNext();i++){
objectkey=keyIter.next();
如果(i!=0){
内容+=“&”;
}
content+=key+“=”+urlcoder.encode(data.get(key),“UTF-8”);
}
系统输出打印项次(内容);
out.writeBytes(内容);
out.flush();
out.close();
BufferedReader in=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
字符串行=”;
而((line=in.readLine())!=null){
系统输出打印项次(行);
}
in.close();
}
下面是我如何测试它的:

 HashMap<String, String> data = new HashMap<String, String>();
 data.put("img", "someuser");

 doSubmit("http://www.blah.com/b.php", data);
HashMap data=newhashmap();
data.put(“img”、“someuser”);
多苏米特(“http://www.blah.com/b.php“,数据);
在.php中进行一些echo测试后,设置了POST数据,但POST数组为空。为什么?

尝试设置

connection.setRequestProperty("Accept-Charset", 'UTF-8');
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

我遇到了完全相同的问题,并在这里找到了解决方案:

我所做的与示例所做的主要区别在于,它生成了一个字符串并对其进行了URL编码——在这里,我生成了navevaluepairs,然后将它们转换为字符串。 它还正确发送字节的长度

conn.setFixedLengthStreamingMode(param.getBytes().length);

我不在的地方。

那没用。我添加了这一点,并且POST数据仍然是空的。
conn.setFixedLengthStreamingMode(param.getBytes().length);