java_HttpClient使用HttpGet進行json資料傳輸
阿新 • • 發佈:2019-01-02
專案中與對方進行資料互動時,對方提供了一套誇域json方式傳遞資料,並給出了一個js示例
$.getJSON(
{Name:"123",Pass:"123"},
function(json){
if(json.UserId==null){
alert("NO");
}else{
alert(json.UserId);
}
}
);
但是此方法處理資料時,只能在頁面中進行,侷限性很大。因此在具體實施時,使用了HttpClient來代替。
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
/**
* 使用HttpClient請求頁面並返回json格式資料.
* 對方接收的也是json格式資料。
* 因此使用HttpGet。
* */
public class Json {
public static void main(String[] args) throws JSONException {
JSONObject json = new JSONObject();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Name", "123"));
params.add(new BasicNameValuePair("Pass", "123"));
//要傳遞的引數.
String url = "http://www.----aspx?" + URLEncodedUtils.format(params, HTTP.UTF_8);
//拼接路徑字串將引數包含進去
json = get(url);
System.out.println(json.get("UserId"));
}
public static JSONObject get(String url) {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
JSONObject json = null;
try {
HttpResponse res = client.execute(get);
if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = res.getEntity();
json = new JSONObject(new JSONTokener(new InputStreamReader(entity.getContent(), HTTP.UTF_8)));
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally{
//關閉連線 ,釋放資源
client.getConnectionManager().shutdown();
}
return json;
}
}