HttpURLConnection发送POST请求传递JSON参数
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
·
public class POSTJson2 {
public static void main(String[] args) {
try {
String defURL = "https://api.apiopen.top/api/login";
URL url = new URL(defURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");//请求POST方式
con.setRequestProperty("Content-Type","application/json;charset=UTF-8");
con.setDoOutput(true);// 设置是否使用HttpURLConnection进行输出,默认值为 false
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
String body = "{\"account\":\"309324904@qq.com\",\"password\":\"123456\"}";
writer.write(body);
writer.flush();
writer.close();
int code = con.getResponseCode();
System.out.println("http状态码:" + code);
if (code == HttpURLConnection.HTTP_OK) {
System.out.println("测试成功");
} else {
System.out.println("测试失败:" + code);
}
// 获取服务端响应,通过输入流来读取URL的响应
InputStream is = con.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
// 关闭连接
con.disconnect();
// 打印读到的响应结果
System.out.println("运行结束:" + sbf.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
http状态码:200
测试成功
运行结束:{"code":200,"message":"成功!","result":{"id":572,"createdAt":"2022-12-09 08:28:14","updatedAt":"2022-12-09 08:28:14","deletedAt":null,"account":"309324904@qq.com","level":0,"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjU3MiwiaWQiOjU3MiwiY3JlYXRlZEF0IjoiMjAyMi0xMi0wOSAwODoyODoxNCIsInVwZGF0ZWRBdCI6IjIwMjItMTItMDkgMDg6Mjg6MTQiLCJkZWxldGVkQXQiOm51bGwsImFjY291bnQiOiIzMDkzMjQ5MDRAcXEuY29tIiwibGV2ZWwiOjAsImV4cCI6MTcyMDk2MDU2NCwiaXNzIjoiYXBpX29wZW4iLCJuYmYiOjE3MjAzNTQ3NjR9.NaW12ztp0jy3auF3ZACc_OX6vI_ERe87uB6PWC4Ycn8"}}
返回的json数据整理下:
{
"code": 200,
"message": "成功!",
"result": {
"id": 572,
"createdAt": "2022-12-09 08:28:14",
"updatedAt": "2022-12-09 08:28:14",
"deletedAt": null,
"account": "309324904@qq.com",
"level": 0,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjU3MiwiaWQiOjU3MiwiY3JlYXRlZEF0IjoiMjAyMi0xMi0wOSAwODoyODoxNCIsInVwZGF0ZWRBdCI6IjIwMjItMTItMDkgMDg6Mjg6MTQiLCJkZWxldGVkQXQiOm51bGwsImFjY291bnQiOiIzMDkzMjQ5MDRAcXEuY29tIiwibGV2ZWwiOjAsImV4cCI6MTcyMDk2MDU2NCwiaXNzIjoiYXBpX29wZW4iLCJuYmYiOjE3MjAzNTQ3NjR9.NaW12ztp0jy3auF3ZACc_OX6vI_ERe87uB6PWC4Ycn8"
}
}
上面是手写的json字符串,如果使用java官方的安装包javax.json,json字符串拼接如下:
JsonObject object= Json.createObjectBuilder()
.add("account","309324904@qq.com")
.add("password","123456")
.build();
writer.write(object.toString());
完整代码如下:
import javax.json.Json;
import javax.json.JsonObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class POSTJson2 {
public static void main(String[] args) {
try {
String defURL = "https://api.apiopen.top/api/login";
URL url = new URL(defURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");//请求POST方式
con.setRequestProperty("Content-Type","application/json;charset=UTF-8");
con.setDoOutput(true);// 设置是否使用HttpURLConnection进行输出,默认值为 false
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
JsonObject object= Json.createObjectBuilder()
.add("account","309324904@qq.com")
.add("password","123456")
.build();
writer.write(object.toString());
writer.flush();
writer.close();
int code = con.getResponseCode();
System.out.println("http状态码:" + code);
if (code == HttpURLConnection.HTTP_OK) {
System.out.println("测试成功");
} else {
System.out.println("测试失败:" + code);
}
// 获取服务端响应,通过输入流来读取URL的响应
InputStream is = con.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
// 关闭连接
con.disconnect();
// 打印读到的响应结果
System.out.println("运行结束:" + sbf.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
f06604fc
* :page_facing_up: bump the copyright years
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
* :page_facing_up: bump the copyright years
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
* :page_facing_up: bump the copyright years
Signed-off-by: Niels Lohmann <niels.lohmann@gmail.com>
---------
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
Signed-off-by: Niels Lohmann <niels.lohmann@gmail.com> 7 天前
d23291ba
* add a ci step for Json_Diagnostic_Positions
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* Update ci.cmake to address review comments
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* address review comment
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix typo in the comment
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix typos in ci.cmake
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* invoke the new ci step from ubuntu.yml
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* issue4561 - use diagnostic positions for exceptions
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix ci_test_documentation check
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* address review comments
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix ci check failures for unit-diagnostic-postions.cpp
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* improvements based on review comments
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix const correctness string
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* further refinements based on reviews
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* add one more test case for full coverage
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* ci check fix - add const
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* add unit tests for json_diagnostic_postions only
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix ci_test_diagnostics
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
* fix ci_test_build_documentation check
Signed-off-by: Harinath Nampally <harinath922@gmail.com>
---------
Signed-off-by: Harinath Nampally <harinath922@gmail.com> 7 天前
更多推荐




所有评论(0)