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(); } } }