我正试图让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.println
和outputBytes
变量,两者都有内容。
我知道它没有发布,因为我已将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进行身份验证?
答案 0 :(得分:1)
您需要设置基本身份验证。您可以通过普通Java或使用Apache HttpClient来完成。