Java POST 请求不发送变量

标签 java php post

我有个问题。我有以下 PHP 页面:

<?php

    header('Content-Type: application/json');
    
    echo $_POST["agentid"];

?>
我的Java代码如下:
public String callWebpage(String strUrl, HashMap<String, String> data) throws InterruptedException, IOException {

    var objectMapper = new ObjectMapper();
    String requestBody = objectMapper
            .writeValueAsString(data);

    URL url = new URL(strUrl);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.setDoOutput(true);
    con.getOutputStream().write(requestBody.getBytes("UTF-8"));
    String result = convertInputStreamToString(con.getInputStream());
    return result;
}
要调用该函数,我使用以下几行:
var values = new HashMap<String, String>() {{
    put("agentid", String.valueOf(agentId));
}};

String jsonResponse = webAPI.callWebpage("https://www.test.org/test.php", values);
这确实打印了页面的结果,但它给了我:
2021-02-28 00:40:16.735 Custom error: [8] Undefined index: agentid<br>2021-02-28 00:40:16.735 Error on line 5
该页面是 HTTPS,我确实收到了响应,但为什么我的 agentid页面没有收到变量,我该如何解决这个问题?

最佳答案

请考虑在您的 Java 连接设置中包含以下代码,以指示您在写入连接输出流之前发布 JSON 内容:

con.setRequestProperty("Content-Type", "application/json");
无论如何,我认为问题出在您的 PHP 代码中:您正在尝试处理原始 HTTP 参数信息,而您正在接收 JSON 片段作为请求正文。
为了访问在 HTTP 请求中收到的原始 JSON 信息,您需要如下内容:
// Takes raw data from the request.
$json = file_get_contents('php://input');

// Converts it into a PHP object
$data = json_decode($json);

// Process information
echo $data->agentid; 
请看这个 link'php://input`想要查询更多的信息。
请注意,尽管您指出了 header('Content-Type: application/json'),但使用上述代码,您将向 Java 客户端返回一个字符串。 ,也许这可能是任何问题的原因。

关于Java POST 请求不发送变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66404541/

相关文章:

java - 如何使用netbeans ide对jtable记录进行过滤

java - 从 java 程序运行 build.xml

php - 如何使用 Laravel Passport 为密码授予客户端创建 token ?

php - 生成和读取条形码

javascript - 可以从 JS 客户端获取 POST 请求的 Java 服务器

PHP $_REQUEST 变量

java - 使用同级 git 存储库进行 Heroku 部署

php - MySQL时间/日期计算

ajax - POST JSON 失败,出现 415 Unsupported media type, Spring 3 mvc

java - 解析文本文件的最简洁方法