HttpClient使用HttpGet进行json数据传输
项目中与对方进行数据交互时,对方提供了一套夸域json方式传递数据,并给出了一个js示例
$.getJSON("http://www.----aspx?callback=?",{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;}}