当前位置: 首页 > 面试题库 >

cURL和HttpURLConnection-发布JSON数据

施选
2023-03-14
问题内容

如何使用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();


 类似资料:
  • 应用程序(Android): 在我运行这个应用程序的手机中,我嗅出了数据,我看到应用程序向服务器发送了一个请求,但数据包不包含json

  • 问题内容: 我使用Ubuntu并在其上安装了cURL。我想用cURL测试我的Spring REST应用程序。我在Java端编写了POST代码。但是,我想用cURL对其进行测试。我正在尝试发布JSON数据。示例数据如下: 我使用以下命令: 它返回此错误: 错误描述是这样的: 服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源支持。 Tomcat日志:“ POST / ui / weba

  • 输出为 所以,即使在我自己的服务器上,我也没有得到正确的数据,它是空数组。我想通过http://docs.shopify.com/api/customer#create使用json实现REST

  • 我从API23改为22,因为他们说httpclient不可用。当我切换到API22时,我遇到了HttpClient、HttpPost和NameValuePair的问题。我找到了使用HttpURLConnectionHandler的解决方案。但是我不知道如何将它用于下面的方法。 有人好心帮我一把

  • 问题内容: 我无法通过CURL将表单数据发布到位于不同主机上的接收PHP脚本。 我得到一个错误 这是我要发布的数组: 这是发生错误的行: 第三个参数 必须 是一个数组,因为在通过同一数组发送文件时,我需要将标头设置为该数组,因此无法将数组转换为查询字符串或使用。 另外,我无法访问接收主机上的代码,因此无法序列化和反序列化数组。 我假设 名称 键的值是数组是导致此错误的原因,我还假设它不支持多维数组

  • 问题内容: 我已经开发了一个Java代码,该代码使用URL和HttpUrlConnection将以下cURL转换为Java代码。卷曲是: 我已经编写了此代码,但是它始终会给HTTP代码400错误的请求。我找不到丢失的内容。 问题答案: 你的JSON不正确。代替 写 因此,JSONObject.toString()应该只为外部对象调用一次。 另一件事(可能不是你的问题,但我想提一下): 为确保不会遇