Java获取第三方接口数据

连接工具类

/**
 * 
 * 功能:httpUrlConnection访问远程接口工具
 * 日期:2015年3月17日 上午11:19:21
 * 
*/ public class HttpUrlConnectionUtil { /** *
     * 方法体说明:向远程接口发起请求,返回字符串类型结果
     * @param url 接口地址
     * @param requestMethod 请求方式
     * @param params 传递参数     重点:参数值需要用Base64进行转码
     * @return String 返回结果
     * 
*/ public static String httpRequestToString(String url, String requestMethod, Map params){ String result = null; try { InputStream is = httpRequestToStream(url, requestMethod, params); byte[] b = new byte[is.available()]; is.read(b); result = new String(b); } catch (IOException e) { e.printStackTrace(); } return result; } /** *
     * 方法体说明:向远程接口发起请求,返回字节流类型结果
     * 作者:itar
     * 日期:2015年3月17日 上午11:20:25
     * @param url 接口地址
     * @param requestMethod 请求方式
     * @param params 传递参数     重点:参数值需要用Base64进行转码
     * @return InputStream 返回结果
     * 
*/ public static InputStream httpRequestToStream(String url, String requestMethod, Map params){ InputStream is = null; try { String parameters = ""; boolean hasParams = false; //将参数集合拼接成特定格式,如name=zhangsan&age=24 for(String key : params.keySet()){ String value = URLEncoder.encode(params.get(key), "UTF-8"); parameters += key +"="+ value +"&"; hasParams = true; } if(hasParams){ parameters = parameters.substring(0, parameters.length()-1); } //请求方式是否为get boolean isGet = "get".equalsIgnoreCase(requestMethod); //请求方式是否为post boolean isPost = "post".equalsIgnoreCase(requestMethod); if(isGet){ url += "?"+ parameters; } URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); //请求的参数类型(使用restlet框架时,为了兼容框架,必须设置Content-Type为“”空) conn.setRequestProperty("Content-Type", "application/octet-stream"); //conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //设置连接超时时间 conn.setConnectTimeout(50000); //设置读取返回内容超时时间 conn.setReadTimeout(50000); //设置向HttpURLConnection对象中输出,因为post方式将请求参数放在http正文内,因此需要设置为ture,默认false if(isPost){ conn.setDoOutput(true); } //设置从HttpURLConnection对象读入,默认为true conn.setDoInput(true); //设置是否使用缓存,post方式不能使用缓存 if(isPost){ conn.setUseCaches(false); } //设置请求方式,默认为GET conn.setRequestMethod(requestMethod); //post方式需要将传递的参数输出到conn对象中 if(isPost){ DataOutputStream dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(parameters); dos.flush(); dos.close(); } //从HttpURLConnection对象中读取响应的消息 //执行该语句时才正式发起请求 is = conn.getInputStream(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return is; } }

service

public interface TestService {

    void selectTest();

    void selectPost();
}

serviceImpl实现


@Service
public class TestServiceImpl implements TestService {

    @Override
    public void selectTest() {
        //url对方接口
        String url="http://127.0.0.1:1313/test/get";
        System.out.println(url);
        System.out.println("----------------------");
        //map存放限制内容
        HashMap map = new HashMap<>();
        String get = HttpUrlConnectionUtil.httpRequestToString(url, "GET", map);
        System.out.println(get);
        System.out.println("----------------------");
    }

    @Override
    public void selectPost() {
        //url对方接口
        String url="http://127.0.0.1:1313/test/post/lll";
        System.out.println(url);
        System.out.println("----------------------");
        //map存放限制内容
        HashMap map = new HashMap<>();
        String post = HttpUrlConnectionUtil.httpRequestToString(url, "POST", map);
        System.out.println(post);
        System.out.println("----------------------");
    }

}

控制层调用

@RestController
public class TestController {

    @Autowired
    private TestService testService;

    @GetMapping("test")
    public void test01(){
        testService.selectTest();;
    }

    @GetMapping("test/post")
    public void test02(){
        testService.selectPost();
    }

}

调用数据成功

Java获取第三方接口数据_第1张图片

你可能感兴趣的:(java)