繁体   English   中英

Java和HttpURLConnection不发送数据

[英]Java and HttpURLConnection not sending data

我正在尝试让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进行身份验证?

您需要设置基本身份验证。 您可以通过纯Java或使用Apache HttpClient来实现。

如何使用HttpURLConnection处理HTTP身份验证?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM