Java和HttpURLConnection不发送数据

时间:2014-08-20 19:48:19

标签: java netbeans httpurlconnection

我正试图让HttpURLConnection远程将JSON字符串发布到PHP文件中。无论我做什么,它都无法正常工作。这是我目前的代码:

HttpURLConnection httpcon = (HttpURLConnection) ((new URL('http://domain.com/me.php').openConnection()));
                            httpcon.setDoOutput(true);
                            httpcon.setRequestProperty("Content-Type", "application/json");
                            httpcon.setRequestProperty("Accept", "application/json");
                            httpcon.setRequestMethod("POST");
                            httpcon.connect();

                            String initial = "{'out': '" + idir + prod + ".jpg', 'in': '" + item[3] + "'}";
                            byte[] outputBytes = initial.getBytes("UTF-8");

                            OutputStream os = httpcon.getOutputStream();
                            os.write(outputBytes);

                            os.close();

我知道initial字符串包含数据,我在其上运行System.out.printlnoutputBytes变量,两者都有内容。

我知道它没有发布,因为我已将PHP文件设置为将发布的内容保存到本地文件中。运行它时没有创建任何文件。

我知道PHP方面有效,服务器接受帖子,因为我可以正常运行:

$ curl -H "Accept: application/json" -H "Content-Type: application/json" -d "{'value': 7.5}" "http://domain.com/me.php"

它可以很好地创建文件并将后期内容写入输出文件。

修改

好的,打印完回复后我现在收到的是401代码,未经授权。我正在使用Apache HTPASSWD身份验证,但我传递的是用户并将URL作为http://user:pass@domain.com/me.php传递。这是来自CLI的curl,所以我认为它也可以在这里工作,显然它没有。

那么如何使用HttpURLConnection进行身份验证?

1 个答案:

答案 0 :(得分:1)

您需要设置基本身份验证。您可以通过普通Java或使用Apache HttpClient来完成。

How to handle HTTP authentication using HttpURLConnection?

http://www.baeldung.com/httpclient-4-basic-authentication