我使用POST从Java向API发送数据。
我尝试做的是在POST请求中发送一个特定的变量到API,然后使用它的值。但是当前值为空。API肯定被调用了。
我的Java看起来像这样:
String line;
StringBuffer jsonString = new StringBuffer();
try {
URL url = new URL("https://www.x.com/api.php");
String payload = "{\"variable1\":\"value1\",\"variable2\":\"value2\"}";
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(payload);
writer.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
connection.disconnect();
}
这是基于:How to send Request payload to REST API in java?
当前值没有被正确读取。我在Java中正确发送了它吗?我必须做些什么来解码它吗?
2条答案
按热度按时间kninwzqo1#
变量
$_POST
不是为所有HTTP POST请求设置的,而是仅为特定类型设置的,例如application/x-www-form-urlencoded。由于您要发布一个包含JSON实体(application/json)的请求,因此需要按如下方式访问它。
tjrkku2a2#
您可以尝试使用以下代码代替String变量有效负载:
这对我很有效