Java 通過HttpURLConnection Post方式提交json,並從服務端返回json資料
阿新 • • 發佈:2019-01-24
這個技術和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”]}