zoukankan      html  css  js  c++  java
  • 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 send1(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");
                }
                System.out.println("responseContent:" + responseContent);
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (response != null)
                        response.close();
    
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (client != null)
                            client.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

    httpClient方式

    添加认证

    HttpClientContext context = HttpClientContext.create();
    public void addUserOAuth(String username, String password) {
            CredentialsProvider credsProvider = new BasicCredentialsProvider();
            org.apache.http.auth.Credentials credentials = new org.apache.http.auth.UsernamePasswordCredentials(username, password);
            credsProvider.setCredentials(org.apache.http.auth.AuthScope.ANY, credentials);
            this.context.setCredentialsProvider(credsProvider);
        }
    public void send() throws ClientProtocolException, IOException {
            HttpClient httpClient = HttpClientBuilder.create().build();
            HttpPost httpPost = BaseHttpPost.buildHttpHeader(url);
            // 设置请求的参数
            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
            nvps.add(new BasicNameValuePair("fromAccid", fromAccid));
            nvps.add(new BasicNameValuePair("toAccids", toAccids));
            nvps.add(new BasicNameValuePair("type", msgType));
            Map<String, Object> body = new HashMap<String, Object>();
            body.put("msg", msg);
            nvps.add(new BasicNameValuePair("body", JSON.toJSONString(body)));
            nvps.add(new BasicNameValuePair("pushcontent", msg));
            httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
            // 执行请求

      addUserOAuth("123", "456");

      

      // 执行请求

    HttpResponse response = httpClient.execute(httpPost,context);

    // 打印执行结果 System.out.println(EntityUtils.toString(response.getEntity(), "utf-8")); }
  • 相关阅读:
    链接服务器创建
    线性RAM地址非线性映射转换充分应用RAM地址空间TFT液晶驱动
    FPGA跨时钟域同步,亚稳态等
    Go常见的坑
    VSCode+PicGo+Gitee实现高效markdown图床
    友链
    linux 命令行使用codeql
    Linux 多进程服务配置 systemd
    列表中重复元素的个数
    起不出来题目了呜呜
  • 原文地址:https://www.cnblogs.com/azhqiang/p/5941582.html
Copyright © 2011-2022 走看看