cURL和HttpURLConnection – 发布JSON数据

如何使用HttpURLConnection发布JSON数据? 我正在尝试这个:

HttpURLConnection httpcon = (HttpURLConnection) ((new URL("a url").openConnection())); httpcon.setDoOutput(true); httpcon.setRequestProperty("Content-Type", "application/json"); httpcon.setRequestProperty("Accept", "application/json"); httpcon.setRequestMethod("POST"); httpcon.connect(); StringReader reader = new StringReader("{'value': 7.5}"); OutputStream os = httpcon.getOutputStream(); char[] buffer = new char[4096]; int bytes_read; while((bytes_read = reader.read(buffer)) != -1) { os.write(buffer, 0, bytes_read);// I am getting compilation error here } os.close(); 

我在第14行遇到编译错误。

cURL请求是:

 curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{'value': 7.5}" \ "a URL" 

这是处理cURL请求的方法吗? 任何信息对我都非常有帮助。

谢谢。

OutputStream期望使用字节,并且您将传递字符。 尝试这个:

 HttpURLConnection httpcon = (HttpURLConnection) ((new URL("a url").openConnection())); httpcon.setDoOutput(true); httpcon.setRequestProperty("Content-Type", "application/json"); httpcon.setRequestProperty("Accept", "application/json"); httpcon.setRequestMethod("POST"); httpcon.connect(); byte[] outputBytes = "{'value': 7.5}".getBytes("UTF-8"); OutputStream os = httpcon.getOutputStream(); os.write(outputBytes); os.close(); 

您可能想要使用OutputStreamWriter类。

 final String toWriteOut = "{'value': 7.5}"; final OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream()); osw.write(toWriteOut); osw.close();