zoukankan      html  css  js  c++  java
  • 简单记下httpclientjava实现get,post请求

    package com.insigma.siis.local.business.phrsapp.phrsappreg;


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Calendar;
    import java.util.List;
    import java.util.Map;


    import net.sf.json.JSONObject;


    import org.apache.commons.httpclient.Header;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.NameValuePair;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.HttpEntity;
    import org.apache.http.util.EntityUtils;
    import org.apache.http.ParseException;




    import com.insigma.odin.framework.AppException;
    import com.insigma.odin.framework.BSSupport;


    /**
     * 人社APP企业注册
     * 
     * @author 李维俊
     *
     */


    public class PhrsappRegBS extends BSSupport {
    private String client_id = "___";
    private String client_secret = "_____________________________";
    private String token_method = "http://________/phrs/oauth/token";
    private String reg_method1 = "http://________/phrs/company-user/register";
    private String reg_method2 = "http://________/phrs/company-user/info";
    private String reg_method3 = "http://________/phrs/company-user/modify";

    public static class UTF8PostMethod extends PostMethod{     
           public UTF8PostMethod(String url){     
               super(url);     
           }     
           @Override    
           public String getRequestCharSet() {     
               //return super.getRequestCharSet();     
               return "utf-8";     
           }     
       } 
    private String sendMsg(NameValuePair[] parametersBody,String methods) {
    HttpClient httpClient =  new HttpClient();  


    //
            PostMethod postMethod = new UTF8PostMethod(methods);  
            postMethod.setRequestBody(parametersBody);
    String response= "";//要返回的response信息  
    int statusCode = 0;  
            try {  
                statusCode = httpClient.executeMethod(postMethod);  
            } catch (HttpException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            // HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发  
            // 301或者302  
            if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY  
                    || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {  
                // 从头中取出转向的地址  
                Header locationHeader = postMethod.getResponseHeader("location");  
                String location = null;  
                if (locationHeader != null) {  
                    location = locationHeader.getValue();  
                    System.out.println("The page was redirected to:" + location);  
    //                response= methodPost(location,data);//用跳转后的页面重新请求。  
                } else {  
                    System.err.println("Location field value is null.");  
                }  
            } else {  
                System.out.println(postMethod.getStatusLine());  
      
                try {  
                    response= postMethod.getResponseBodyAsString();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
                postMethod.releaseConnection();  
            }  
            return response;
    }

    private String getToken(){
    // 核心应用类
    NameValuePair[] parametersBody = new NameValuePair[2];
    parametersBody[0] = new NameValuePair("client_id", client_id);
    parametersBody[1] = new NameValuePair("client_secret",client_secret);
    String response = sendMsg(parametersBody,token_method);
    JSONObject jobj = JSONObject.fromObject(response);
    return jobj.getString("access_token");


    }

    public String getEncoding(String str) {      
           String encode = "GB2312";      
          try {      
              if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是GB2312
                   String s = encode;      
                  return s;      //是的话,返回“GB2312“,以下代码同理
               }      
           } catch (Exception exception) {      
           }      
           encode = "ISO-8859-1";      
          try {      
              if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是ISO-8859-1
                   String s1 = encode;      
                  return s1;      
               }      
           } catch (Exception exception1) {      
           }      
           encode = "UTF-8";      
          try {      
              if (str.equals(new String(str.getBytes(encode), encode))) {   //判断是不是UTF-8
                   String s2 = encode;      
                  return s2;      
               }      
           } catch (Exception exception2) {      
           }      
           encode = "GBK";      
          try {      
              if (str.equals(new String(str.getBytes(encode), encode))) {      //判断是不是GBK
                   String s3 = encode;      
                  return s3;      
               }      
           } catch (Exception exception3) {      
           }      
          return "";        //如果都不是,说明输入的内容不属于常见的编码格式。
       }




    /**
    * 企业注册信息

    * @param dto
    * @return
    * @throws AppException
    */
    public void save(PhrsappRegDTO dto) throws AppException,URISyntaxException,
    ClientProtocolException, IOException {
    String encode = getEncoding(dto.getAaa006());
    System.out.println(encode);
    String aaa001 = dto.getAaa001();
    String aaa002 = dto.getAaa002();
    String aaa003 = dto.getAaa003();
    String aaa004 = dto.getAaa004();
    String aaa005 = dto.getAaa005();
    String aaa006 = dto.getAaa006();
    String aaa007 = dto.getAaa007();

    // 示例:提交用户名和密码
    System.out.println(getEncoding(aaa006));
    System.out.println("aaa003"+aaa003);
    System.out.println("aaa004"+aaa004);
    NameValuePair[] parametersBody = new NameValuePair[8];
    String token = getToken();
    parametersBody[0] = new NameValuePair("access_token",token);
    parametersBody[1] = new NameValuePair("username",aaa001);
    parametersBody[2] = new NameValuePair("password",aaa002);
    parametersBody[3] = new NameValuePair("companyName",aaa003);
    parametersBody[4] = new NameValuePair("address",aaa004);
    parametersBody[5] = new NameValuePair("phoneNumb",aaa005);
    parametersBody[6] = new NameValuePair("legalRepr",aaa006);
    parametersBody[7] = new NameValuePair("email",aaa007);
    //
    String response = sendMsg(parametersBody,reg_method1);
    System.out.println(response);

    JSONObject jobj = JSONObject.fromObject(response);
    if(jobj.getString("success").equals("true")){
    return;
    }else{

    throw new AppException("保存出错:"+jobj.getString("message"));
    }


    }

    public String sendGet(String reg_method3,String token, String aaa001) {
            String result = "";
            BufferedReader in = null;
            try {
                String urlNameString = reg_method3 + "?access_token=" +token+"&username="+aaa001;
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("Charsert", "UTF-8");
                connection.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
    //            for (String key : map.keySet()) {
    //                System.out.println(key + "--->" + map.get(key));
    //            }
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }




    /**
    * 企业信息查询

    * @param aaa001
    * @return
    * @throws AppException
    */
    public PhrsappRegDTO query(String aaa001) throws AppException,
    URISyntaxException, ClientProtocolException, IOException {


    PhrsappRegDTO dto = new PhrsappRegDTO();
    // 示例:提交用户名和密码
    String token = getToken();
    //
    NameValuePair[] parametersBody = new NameValuePair[2];
    parametersBody[0] = new NameValuePair("access_token",token);
    parametersBody[1] = new NameValuePair("username",aaa001);

    String response = sendMsg(parametersBody,reg_method2);

    System.out.println(response);
    // response = new String(response.getBytes("utf8"),"GB2312");
    // System.out.println("gb2312:"+new String(response.getBytes("GB2312")));
    // System.out.println("GBK:"+new String(response.getBytes("GBK")));
    // System.out.println("UTF-8:"+new String(response.getBytes("UTF-8")));
    // System.out.println("ISO-8859-1:"+new String(response.getBytes("ISO-8859-1")));
    // response = new String(response.getBytes("utf8"));
    // System.out.println(response);
    JSONObject jobj = JSONObject.fromObject(response);
    if (jobj.getString("success").equals("true")) {
    JSONObject subObj = JSONObject.fromObject(jobj.getString("body"));

    if(subObj.has("companyName")){
    String aaa003 = new String(subObj.getString("companyName"));
    dto.setAaa003(aaa003);
    }else{
    dto.setAaa003("无");
    }
    if(subObj.has("address")){
    String aaa004 = new String(subObj.getString("address"));
    dto.setAaa004(aaa004);
    }else{
    dto.setAaa004("无");
    }
    if(subObj.has("phoneNumb")){
    dto.setAaa005(subObj.getString("phoneNumb"));
    }else{
    dto.setAaa005("无");
    }
    if(subObj.has("legalRepr")){
    String aaa006 = new String(subObj.getString("address"));
    dto.setAaa006(aaa006);
    }else{
    dto.setAaa006("无");
    }
    if(subObj.has("email")){
    dto.setAaa007(subObj.getString("email"));
    }else{
    dto.setAaa007("无");
    }
    if(subObj.has("createTime")){
    Calendar ca = Calendar.getInstance();
    ca.setTimeInMillis(Long.parseLong(subObj.getString("createTime")));
    dto.setAaa008(ca.get(Calendar.YEAR)+"-"+(ca.get(Calendar.MONTH)+1)+"-"+(ca.get(Calendar.DAY_OF_MONTH)+1)+" "+ca.get(Calendar.HOUR_OF_DAY)+":"+ca.get(Calendar.MINUTE)+":"+ca.get(Calendar.SECOND));
    // dto.setAaa008(subObj.getString("createTime"));
    }else{
    dto.setAaa008("无");
    }
    if(subObj.has("sts")){
    dto.setAaa009(subObj.getString("sts"));
    }else{
    dto.setAaa009("无");
    }

    return dto;
    } else {


    throw new AppException("查询出错:" + jobj.getString("message"));
    }


    }

    /**
    * 企业信息更新

    * @param dto
    * @return
    * @throws AppException
    */
    public void modify(PhrsappRegDTO dto) throws AppException,
    URISyntaxException, ClientProtocolException, IOException {
    // 示例:提交用户名和密码
    NameValuePair[] parametersBody = new NameValuePair[9];
    String token = getToken();
    String encode =  getEncoding(dto.getAaa006());
    System.out.println("encode:"+encode);
    parametersBody[0] = new NameValuePair("access_token",token);
    parametersBody[1] = new NameValuePair("username",dto.getAaa001());
    parametersBody[2] = new NameValuePair("password",dto.getAaa002());
    parametersBody[3] = new NameValuePair("companyName",dto.getAaa003());
    parametersBody[4] = new NameValuePair("address",dto.getAaa004());
    parametersBody[5] = new NameValuePair("phoneNumb",dto.getAaa005());
    parametersBody[6] = new NameValuePair("legalRepr",dto.getAaa006());
    parametersBody[7] = new NameValuePair("email",dto.getAaa007());
    parametersBody[8] = new NameValuePair("sts",dto.getAaa009());
    //
    String response = sendMsg(parametersBody, reg_method3);
    System.out.println(response);


    JSONObject jobj = JSONObject.fromObject(response);
    if (jobj.getString("success").equals("true")) {
    // dto.setAaa003(jobj.getString("companyName"));
    // dto.setAaa004(jobj.getString("address"));
    // dto.setAaa005(jobj.getString("phoneNum"));
    // dto.setAaa006(jobj.getString("legalRepr"));
    // dto.setAaa007(jobj.getString("email"));
    // dto.setAaa008(jobj.getString("createTime"));
    // dto.setAaa009(jobj.getString("sts"));
    return ;
    } else {


    throw new AppException("修改出错:" + jobj.getString("message"));
    }


    }
    }
  • 相关阅读:
    PlayerPrefs存储Vector3等结构数据
    Kafka集群部署及測试
    火云开发课堂
    Thinking in Java:容器深入研究
    求int型数据在内存中存储时1的个数
    JAVA 几种多线程的简单实例 Thread Runnable
    Android利用Intent与其它应用交互
    kernel
    Azure DocumentDB 正式发布
    在公有云平台体验开源方案的自动部署
  • 原文地址:https://www.cnblogs.com/bbbing/p/11011435.html
Copyright © 2011-2022 走看看