您的位置:首页 > 理论基础 > 计算机网络

Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据

2016-04-08 12:35 981 查看
这个技术和xml差不过,主要是服务端代码稍微修改,客户端代码修改部分传递参数就可以完成,但在之前需要导入json所需要的jar包。

PostJson.java代码

package PostPager;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class PostJson {
public static void main(String args[])
{
try {

JSONObject  obj = new JSONObject();
obj.append("app_name", "全民大讨论");
obj.append("app_ip", "10.21.243.234");
obj.append("app_port", 8080);
obj.append("app_type", "001");
obj.append("app_area", "asd");

System.out.println(obj);
// 创建url资源
URL url = new URL("http://119.29.85.118//test.php");
// 建立http连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置允许输出
conn.setDoOutput(true);

conn.setDoInput(true);

// 设置不用缓存
conn.setUseCaches(false);
// 设置传递方式
conn.setRequestMethod("POST");
// 设置维持长连接
conn.setRequestProperty("Connection", "Keep-Alive");
// 设置文件字符集:
conn.setRequestProperty("Charset", "UTF-8");
//转换为字节数组
byte[] data = (obj.toString()).getBytes();
// 设置文件长度
conn.setRequestProperty("Content-Length", String.valueOf(data.length));

// 设置文件类型:
conn.setRequestProperty("contentType", "application/json");

// 开始连接请求
conn.connect();
OutputStream  out = conn.getOutputStream();
// 写入请求的字符串
out.write((obj.toString()).getBytes());
out.flush();
out.close();

System.out.println(conn.getResponseCode());

// 请求返回的状态
if (conn.getResponseCode() == 200) {
System.out.println("连接成功");
// 请求返回的数据
InputStream in = conn.getInputStream();
String a = null;
try {
byte[] data1 = new byte[in.available()];
in.read(data1);
// 转成字符串
a = new String(data1);
System.out.println(a);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
System.out.println("no++");
}

} catch (Exception e) {

}

}
}


服务端代码test.php

<?php
$result = file_get_contents('php://input');
echo $result;
echo json_decode(json_encode($result));

?>


这里面的json_encode是对字符串进行json编码,json_decode是对字符串进行json解码

返回结果:

{“app_name”:[“全民大讨论”],”app_ip”:[“10.21.243.234”],”app_type”:[“001”],”app_port”:[8080],”app_area”:[“asd”]}

200

连接成功

{“app_name”:[“全民大讨论”],”app_ip”:[“10.21.243.234”],”app_type”:[“001”],”app_port”:[8080],”app_area”:[“asd”]}{“app_name”:[“全民大讨论”],”app_ip”:[“10.21.243.234”],”app_type”:[“001”],”app_port”:[8080],”app_area”:[“asd”]}

http协议详解,这篇文章讲的很好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: