zoukankan      html  css  js  c++  java
  • java代码调用第三方接口

    一、利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数)

    public static JSONObject getHttpResponseJson(String url,Map<String,String> param){
            CloseableHttpClient httpclient = null;
            CloseableHttpResponse response = null;
            JSONObject jsonObject = null;
            
            try {
                //请求发起客户端
                httpclient = HttpClients.createDefault();
                //参数集合
                List postParams = new ArrayList();
                //遍历参数并添加到集合
                for(Map.Entry<String, String> entry:param.entrySet()){
                    postParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
                }
                //通过post方式访问
                HttpPost post = new HttpPost(url);
                HttpEntity paramEntity = new UrlEncodedFormEntity(postParams,"UTF-8");
                post.setEntity(paramEntity);
                response = httpclient.execute(post);
                HttpEntity valueEntity = response.getEntity();
                String content = EntityUtils.toString(valueEntity);
                jsonObject = JSONObject.fromObject(content);
                
                return jsonObject;
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(httpclient != null){
                    try {
                        httpclient.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(response != null){
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return jsonObject;
        }

    二、利用httpclient来同时上传文件和其他字符串参数(postUrl请求地址,第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,filePathParam封装文件的上传路径,param封装参数)

    public static String getHttpResponseString(String postUrl,Map<String,String> filePathParam,Map<String,String> param){
            //1:创建一个httpclient对象
            HttpClient httpclient = new DefaultHttpClient();
            Charset charset = Charset.forName("UTF-8");//设置编码
            try {
                //2:创建http的发送方式对象,是GET还是post
                HttpPost httppost = new HttpPost(postUrl);
    
                //3:创建要发送的实体,就是key-value的这种结构,借助于这个类,可以实现文件和参数同时上传
                MultipartEntity reqEntity = new MultipartEntity();
                
                if (filePathParam != null) {
                    //遍历图片并添加到MultipartEntity实体中
                    for(Map.Entry<String, String> entry:filePathParam.entrySet()){
                         FileBody fileContent = new FileBody(new File(entry.getValue()));
                         reqEntity.addPart(entry.getKey(),fileContent);
                    }
                }
                
                if (param != null) {
                    //遍历参数并添加到MultipartEntity实体中
                    for(Map.Entry<String, String> entry:param.entrySet()){
                        StringBody content = new StringBody(entry.getValue(),charset);
                        reqEntity.addPart(entry.getKey(), content);
                    }
                }
                
                httppost.setEntity(reqEntity);
    
                //4:执行httppost对象,从而获得信息
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity resEntity = response.getEntity();
    
                //获得返回来的信息,转化为字符串string
                String resString = EntityUtils.toString(resEntity);
                return resString;
    
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) {}
            }
            return null;
        }
  • 相关阅读:
    响应式布局和BootStrap 全局CSS样式
    javascript中的undefined与null的区别
    before(),after(),prepend(),append()等新DOM方法简介
    解决文字和text-decoration:underline下划线重叠问题
    CSS3 linear-gradient线性渐变实现虚线等简单实用图形
    用Javascript获取页面元素的位置
    rem、px、em(手机端h5页面屏幕适配的几种方法)
    用flex和rem实现移动端页面
    HTML5新增的form属性简介(转载至张鑫旭)
    vue实现图片放大
  • 原文地址:https://www.cnblogs.com/xuegu/p/8490815.html
Copyright © 2011-2022 走看看