繁体   English   中英

我需要执行基本身份验证以及将密钥值作为 Http 发布请求的主体发送并获取数据

[英]I need to perform Basic authentication as well as send key value as body for a Http Post request and get data

url 的基本授权

正文 x-www-form-urlencoded 中的键值内容

我需要执行基本身份验证并在正文中传递 www-form-urlencoded 数据。 我如何使用 http 在 java 中编码,以获取将上述数据传递给 url 后获得的响应数据。

在我处理它之后,我得到了下面的代码。

public void postMethod() throws Exception{
    String result="";
    try{
        Map<String,String> map=new LinkedHashMap<>();
        map.put("key_data","value");
        StringBuilder postdata=new StringBuilder();
        for(Map.Entry<String,String> param:map.entrySet()){
            if(postdata.length()!=0) postdata.append('&');
            postdata.append(URLEncoder.encode(param.getKey(),"UTF-8"));
            postdata.append('=');
            postdata.append(URLEncoder.encode(param.getValue(),"UTF-8"));
        }
        byte[] data=postdata.toString().getBytes("UTF-8");
        String user='admin';
        String pwd='admin';
        String val=user+":"+pwd;
        String url="https://example.com";
        byte[] authEncode=Base64.encodeBase64(val.getBytes());
        String authString=new String(authEncoder);
        URL url1=new URL(url);
        HttpURLConnection urlConnection=(HttpURLConnection)url1.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setRequestProperty("Authorization","Basic "+authString);
        urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        urlConnection.setRequestProperty("Content-Length",String.valueOf(data.length));
        urlConnection.setDoOutput(true);
        urlConnection.getOutputStream().write(data);
        Reader in=new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"UTF-8"));
        StringBuilder str=new StringBuilder();
        for(int i;(i=in.read())>=0;)
            str.append((char)i);
        result=str.toString();
    }
    catch(Exception e){
    //handle the exception
    }
    System.out.println(result);
}

我希望这对上述问题或上述代码的优化有帮助并欢迎任何其他方法。

postman 可帮助您从自身创建代码片段,您也可以使用它:

在此处输入图像描述

现在使用你想要的代码:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM