使用HttpClient实现对第三方服务器的请求并接受返回数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用HttpClient实现对第三方服务器的请求并接受返回数据相关的知识,希望对你有一定的参考价值。

/*
 * 创建日期 2017-5-24
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package com.enfo.intrust.command;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.*;
import net.sf.json.JSONObject;
import java.util.Properties;
import java.io.IOException;

/**
 * @author tapt
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

public class BankCommandService {
    private static String rootURL="";//银企直联平台服务器地址
    private static Properties commandProperties=new Properties();
    //读取银企直联平台配置文件的属性
    static{
        try {
            commandProperties.load(BankCommandService.class.getResourceAsStream("BankCommand.properties"));
            rootURL=commandProperties.getProperty("rootURL");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**
     * @TODO 通用方法,传入一个json,连接银企直联平台,返回平台响应的json
     * */
    public String sendCommand(String commandURL,String sendJson){
        String resultJson="银企直连平台返回异常";
        try {      
            // 新建HttpClient对象,用于访问银企直联平台;
            HttpClient httpClient = new HttpClient();
            PostMethod postMethod = new PostMethod(commandURL);
            // 让post请求携带json数据
            RequestEntity requestEntity = new StringRequestEntity(sendJson,"application/json", "UTF-8");
            postMethod.setRequestEntity(requestEntity);
            // 发送post请求
            httpClient.executeMethod(postMethod);
            // 得到从银企直联响应的json数据
           resultJson = new String(postMethod.getResponseBody());
        } catch (Exception e) {
            e.printStackTrace();
        }                
        return resultJson;
    }
    
    /**
     * @TODO 直接划款
     * */
    public String directPay(String sendJson){
        String commandURL=rootURL+commandProperties.getProperty("directPayCommand");
        return sendCommand(commandURL,sendJson);
        }
    
    /**
     * @TODO 批量查询余额
     * */
    public String getBalanceBatch(String sendJson){
        String commandURL=rootURL+commandProperties.getProperty("getBalanceBatchCommand");
        return sendCommand(commandURL,sendJson);
        }
    
    /**
     * @TODO 查询账户列表
     * */    
    public String getAccountList(String sendJson){
        String commandURL=rootURL+commandProperties.getProperty("getAccountListCommand");
        return sendCommand(commandURL,sendJson);
        }
    
    /**
     * @TODO 用于测试银企直联返回数据的方法-查询所有账户列表
     * */
    public static void main(String[] args) {
            JSONObject jsonObject = new JSONObject();
            JSONObject headvalue=new JSONObject();
            JSONObject bodyvalue=new JSONObject();
            JSONObject infovalue=new JSONObject();
            headvalue.put("request_no", "001201612221707000002");
            headvalue.put("device_type", "1");
            headvalue.put("cust_id", "1122345452");
            headvalue.put("router", "1");
            headvalue.put("channel", "01");
            headvalue.put("app_id", "0001");
            headvalue.put("charset", "UTF-8");
            headvalue.put("version", "1.0.0.1");
            headvalue.put("sign", "MScRd7GM52W41VpRGxn7BtNWsSLM/RZPzbIGjxQFiChQcN8CXTjFU9MVtDP7NXxgZZddVc+NOc+P91anV9fQ1TjtdYZJr5hg1xPP/CAokB5LlxANnc+UfBcGQWGRGjXa/wijRPvdu7hiHEKW4dNt6giQgQMlcH/1eobXY5Z4pmU=");
            headvalue.put("language", "CN");
            
            jsonObject.put("head", headvalue);
            
            infovalue.put("buscod", "n03010");
            infovalue.put("busmod", "00001");
            
            bodyvalue.put("info", infovalue);
            
            jsonObject.put("body", bodyvalue);
          //创建查询账户列表的发送json
            System.out.println("要传入到银企直联的json数据是:\n"+jsonObject.toString());
            System.out.println("从银企直联平台查询账号列表,接收到的响应是:");
            //调用业务逻辑方法,取得返回的json并打印
           String resultString=new BankCommandService().getAccountList(jsonObject.toString());
           System.out.println(resultString);       
    }
}

以上是关于使用HttpClient实现对第三方服务器的请求并接受返回数据的主要内容,如果未能解决你的问题,请参考以下文章

C#通过HttpClient请求第三方接口并实例化返回

C#通过HttpClient请求第三方接口并实例化返回

C#通过HttpClient请求第三方接口并实例化返回

java实现HTTP请求的三种方式

java实现HTTP请求的三种方式

HttpClient 发送 HTTPHTTPS 请求的简单封装