通过不同方式获取接口(包括webServiceSocket...)数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过不同方式获取接口(包括webServiceSocket...)数据相关的知识,希望对你有一定的参考价值。
最近一直在做接口程序的开发。发现因为每个公司的不同,他们会使用各种方式开放接口给我们使用它的数据,有HTTP、socket、存储过程、XFire...
不同的接口程序需要通过不同的方式获取他们放出来的数据。
1.HTTP(如何获取数据 ,以下是HTTP使用的过程和解析, ~~~ 主要看代码)
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
1 package com.xiong.webService; 2 import java.util.ArrayList; 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Map; 6 import net.sf.json.JSONObject; 7 import org.apache.http.HttpEntity; 8 import org.apache.http.HttpResponse; 9 import org.apache.http.HttpStatus; 10 import org.apache.http.NameValuePair; 11 import org.apache.http.client.HttpClient; 12 import org.apache.http.client.entity.UrlEncodedFormEntity; 13 import org.apache.http.client.methods.HttpPost; 14 import org.apache.http.entity.StringEntity; 15 import org.apache.http.impl.client.DefaultHttpClient; 16 import org.apache.http.message.BasicHeader; 17 import org.apache.http.message.BasicNameValuePair; 18 import org.apache.http.params.BasicHttpParams; 19 import org.apache.http.params.HttpConnectionParams; 20 import org.apache.http.params.HttpParams; 21 import org.apache.http.protocol.HTTP; 22 import org.apache.http.util.EntityUtils; 23 import org.apache.log4j.Logger; 24 import org.dom4j.Document; 25 import org.dom4j.DocumentException; 26 import org.dom4j.DocumentHelper; 27 import org.dom4j.Element; 28 import org.dom4j.io.SAXReader; 29 30 31 @SuppressWarnings({ "deprecation", "resource" }) 32 public String webService(String url,Map<String,String> map){ 33 34 HttpPost httpRequst = new HttpPost(url);//创建HttpPost对象 35 try { 36 HttpParams httpParameters = new BasicHttpParams(); 37 HttpConnectionParams.setConnectionTimeout(httpParameters, 600*1000);//设置请求超时 秒 38 HttpConnectionParams.setSoTimeout(httpParameters, 600*1000); //设置等待数据超时 秒 39 HttpClient httpclient = new DefaultHttpClient(httpParameters); 40 41 List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>(); 42 for (Map.Entry<String,String> mapEntry : map.entrySet()) { 43 list.add(new BasicNameValuePair(mapEntry.getKey(), mapEntry.getValue())); 44 } 45 httpRequst.setEntity(new UrlEncodedFormEntity(list,HTTP.UTF_8)); 46 HttpResponse response = httpclient.execute(httpRequst); 47 //请求成功 48 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 49 { 50 HttpEntity httpEntity = response.getEntity(); 51 String result = EntityUtils.toString(httpEntity,"UTF-8");//取出应答字符串 52 result = dom4jAnalysis(result); 53 return result; 54 } 55 } catch (Exception e) { 56 e.printStackTrace(); 57 return ""; 58 } 59 return null; 60 } 61 /** 62 * 解析返回的文件 63 * 根据自己的需求需要解析 64 * @param str 65 * @return 66 */ 67 public String dom4jAnalysis(String str){ 68 69 try { 70 Document document = DocumentHelper.parseText(str); 71 Element rootElement = document.getRootElement(); 72 73 return rootElement.getText(); 74 } catch (DocumentException e) { 75 e.printStackTrace(); 76 } 77 return null; 78 }
HTTP的使用方法
1 package com.xiong.test; 2 import com.xiong.webService; 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class Test1 { 7 public static void main(String[] args) { 8 9 BaseService baseService = new BaseService(); 10 11 Map<String,String> map = new HashMap<String, String>(); 12 map.put("name", "张三"); 13 //BaseService.GET_EXIST_USER_INFO -- webService地址 14 String result = baseService.webService(BaseService.GET_EXIST_USER_INFO, map); 15 } 16 }
以上是关于通过不同方式获取接口(包括webServiceSocket...)数据的主要内容,如果未能解决你的问题,请参考以下文章