如何从Java REST API请求中解码JSON?

rvpgvaaj  于 2023-01-03  发布在  Java
关注(0)|答案(2)|浏览(180)

我使用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中正确发送了它吗?我必须做些什么来解码它吗?

kninwzqo

kninwzqo1#

变量$_POST不是为所有HTTP POST请求设置的,而是仅为特定类型设置的,例如application/x-www-form-urlencoded。
由于您要发布一个包含JSON实体(application/json)的请求,因此需要按如下方式访问它。

$json = file_get_contents('php://input');
$entity= json_decode($json, TRUE);
tjrkku2a

tjrkku2a2#

您可以尝试使用以下代码代替String变量有效负载:

List<NameValuePair> payload = new ArrayList<NameValuePair>();

payload.add(new BasicNameValuePair("variable1", "value1");

这对我很有效

相关问题