通过不同方式获取接口(包括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...)数据的主要内容,如果未能解决你的问题,请参考以下文章

struts2中获取表单数据的方式

前端面试题

不同服务调用方式的比较

面向对象三大特性,六个原则

无标题

Java反射注解妙用(获取所有接口说明)