java 发送带Basic Auth认证的http post请求实例代码

构造http header

private static final String URL = "url";
private static final String APP_KEY = "key";
private static final String SECRET_KEY = "secret";

    /**
   * 构造Basic Auth认证头信息
   * 
   * @return
   */
  private String getHeader() {
    String auth = APP_KEY + ":" + SECRET_KEY;
    byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")));
    String authHeader = "Basic " + new String(encodedAuth);
    return authHeader;
  }

方式一:

private void send(JPushObject pushObject) {
    CloseableHttpClient client = HttpClients.createDefault();
    HttpPost post = new HttpPost(URL);
    System.out.println("要发送的数据" + JSON.toJSONString(pushObject));
    StringEntity myEntity = new StringEntity(JSON.toJSONString(pushObject), ContentType.APPLICATION_JSON); // 构造请求数据
    post.addHeader("Authorization", getHeader());
    post.setEntity(myEntity); // 设置请求体
    String responseContent = null; // 响应内容
    CloseableHttpResponse response = null;
    try {
        response = client.execute(post);
        System.out.println(JSON.toJSONString(response));
        if (response.getStatusLine().getStatusCode() == 200) {
            HttpEntity entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
        }
        
        if (response != null) 
            response.close();
        if (client != null) 
            client.close();
        
        System.out.println("responseContent:" + responseContent);
        
    } catch(ClientProtocolException e) {
        e.printStackTrace();
    } catch(IOException e) {
        e.printStackTrace();
    } 
}

方式二:

引用到的jar: httpclient-4.5.jar; httpcore-4.4.1.jar; commons-logging-1.2.jar; common-codec-1.9.jar

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

public class HttpClientWithBasicAuth {
    
    public static void main(String args[])  {
    
        String host = "10.104.203.166";
        int port = 8080;
        String URI = "http://localhost/rest/channel/receipt";
        
        // 创建HttpClientBuilder
        httpClientBuilder httpClientBuilder = HttpClientBuilder.create();
        // 设置BasicAuth
        CredentialsProvider provider = new BasicCredentialsProvider();
        // Create the authentication scope
        AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);
        // Create credential pair,在此处填写用户名和密码
        UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("root", "superuser");
        // Inject the credentials
        provider.setCredentials(scope, credentials);
        // Set the default credentials provider
        httpClientBuilder.setDefaultCredentialsProvider(provider);
        // HttpClient
        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
        
        String result = "";
        HttpGet httpGet = null;
        HttpResponse httpResponse = null;
        HttpEntity entity = null;
        httpGet = new HttpGet("http://"+host+URI);
        try {
            httpResponse = closeableHttpClient.execute(httpGet);
            entity = httpResponse.getEntity();
            if( entity != null ){
                result = EntityUtils.toString(entity);
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 关闭连接
        closeableHttpClient.close();
        
        //
        System.out.println(result);
        
    }
}

 方式三.

import java.io.IOException;

import net.sf.json.JSONObject;
import net.spring.model.User;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

public class Client {
    @Test
    public void HttpPostData() {  
          try { 
              HttpClient httpclient = new DefaultHttpClient();  
              String uri = "http://localhost:8080/springMVC/user/getUserByName"; 
              HttpPost httppost = new HttpPost(uri);   
              //添加http头信息 
              httppost.addHeader("Authorization", "your token"); //认证token 
              httppost.addHeader("Content-Type", "application/json"); 
              httppost.addHeader("User-Agent", "imgfornote");  
              JSONObject obj = new JSONObject();
              obj.put("name", "cwh"); 
              httppost.setEntity(new StringEntity(obj.toString()));     
              HttpResponse response;  
              response = httpclient.execute(httppost);  
              //检验状态码,如果成功接收数据  
              int code = response.getStatusLine().getStatusCode();  
              System.out.println(code+"code");
              if (code == 200) {  
                  String rev = EntityUtils.toString(response.getEntity());//返回json格式: {"id": "","name": ""}         
                  obj= JSONObject.fromObject(rev);
              
                  User user = (User)JSONObject.toBean(obj,User.class);
                  System.out.println("返回数据==="+user.toString());
              } 
              } catch (ClientProtocolException e) { 
                  e.printStackTrace();
              } catch (IOException e) {  
                  e.printStackTrace();
              } catch (Exception e) { 
                  e.printStackTrace();
              } 
         }
}

 

posted @ 2017-09-21 12:51  如.若  阅读(35859)  评论(1编辑  收藏  举报