三种httpclient调用远程接口方式以及返回的json数据处理

额。。因项目需求所以都是get方式请求的,当然换post也是很简单的,大家应该都能看懂,

废话不多说,直接上代码。

先导入依赖pom包

<!-- HttpClient插件 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </dependency>

   <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

public String getAllGroups(){
		   // 请求接口地址
        String url = "http://127.0.0.1:8008/sss/bbb";
        HttpClient httpclient = null;
        GetMethod post = null;
        String result = "";
        String jsonResult = null;
        try {
            //创建连接
            httpclient = new HttpClient();
            post = new GetMethod(url);
            // 设置编码方式
            post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
            // 执行请求
            httpclient.executeMethod(post);
            // 判断网络连接状态码是否正常(0--200都数正常)
            if (post.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            // 接口返回信息
             result = new String(post.getResponseBody(), "UTF-8");
            }else{
            	System.out.println("返回错误的状态码为:"+post.getStatusLine().getStatusCode());
            }
            jsonResult = JSONObject.fromObject(result).getString("groups");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            post.releaseConnection();
            ((SimpleHttpConnectionManager) httpclient.getHttpConnectionManager()).shutdown();
        }
		return jsonResult;
    }
 public String getStopList(){
        String url = "http://127.0.0.1:8008/sss/bbb";
        String result="";
        String jsonResult = null;
          try {
                // 根据地址获取请求
                HttpGet request = new HttpGet(url);//这里发送get请求
                // 获取当前客户端对象
                DefaultHttpClient httpClient = new DefaultHttpClient();
                // 通过请求对象获取响应对象
                HttpResponse response = httpClient.execute(request);
                // 判断网络连接状态码是否正常(0--200都数正常)
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    result= EntityUtils.toString(response.getEntity(),"utf-8");
                    jsonResult = JSONObject.fromObject(result).getString("stops");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
		return jsonResult;
    }

这个是带参数并且返回结果有做处理的,json数据格式下面也会给出。

public HashMap<String, Object> getStopInfo(String param){
		HashMap<String, Object> map = new HashMap<>();
		// 请求接口地址
        String url = "http://127.0.0.1:8008/sss/bbb"+"?bundle="+param;
        // 请求参数
        HttpClient httpclient = null;
        GetMethod post = null;
        String result= "";
        String jsonResult = null;
        try {
            //创建连接
            httpclient = new HttpClient();
            post = new GetMethod(url);
            // 设置编码方式
            post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
            // 执行请求
            httpclient.executeMethod(post);
            // 判断网络连接状态码是否正常(0--200都数正常)
            if (post.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            	// 接口返回信息
                result = new String(post.getResponseBody(), "UTF-8");
                JSONObject jb = new JSONObject();
    			 JSONObject jb1 = jb.fromObject(result);
    			 JSONArray ja =  JSONArray.fromObject(jb1.get("StopInfo"));
    			 Iterator<Object> it = ja.iterator();
    			 while (it.hasNext()) {
    				JSONObject ob = (JSONObject) it.next();
    				String bundle = ob.get("bundle")+"";
    				String owner = ob.get("owner")+"";
    				String inportCount = ob.get("inportCount")+"";
    				String outportCount = ob.get("outportCount")+"";
    				String groups = ob.get("groups")+"";
    				String properties = ob.get("properties")+"";
    				String name = ob.get("name")+"";
     				String description = ob.get("description")+"";
    				map.put("bundle", bundle);
    				map.put("owner", owner);
    				map.put("inportCount", inportCount);
    				map.put("outportCount", outportCount);
    				map.put("groups", groups);
    				map.put("properties", properties);
    				map.put("name", name);
     				map.put("description", description);
    			}
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            post.releaseConnection();
            ((SimpleHttpConnectionManager) httpclient.getHttpConnectionManager()).shutdown();
        }
		return map;
    }

上面的json数据格式:

如果有问题或者大家有什么好的代码欢迎留言提出。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值