日期:2014-05-16 浏览次数:20341 次
项目中与对方进行数据交互时,对方提供了一套夸域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; } }