【问题标题】:Java Get request with parameter and Authetification带有参数和身份验证的 Java Get 请求
【发布时间】:2021-03-08 13:02:34
【问题描述】:

我想在我的请求中添加一些参数(代码值和名称值):

    String code = "001";
    String name = "AAA";       

    HttpGet request = new HttpGet(url);
    String auth = user + ":" + mdp;

    byte[] encodedAuth = Base64.encodeBase64(
            auth.getBytes(StandardCharsets.ISO_8859_1));

    String authHeader = "Basic " + new String(encodedAuth);

    request.setHeader(HttpHeaders.AUTHORIZATION, authHeader);

    HttpClient client = HttpClientBuilder.create().build();
    HttpResponse response = client.execute(request);

    int statusCode = response.getStatusLine().getStatusCode();

如何通过身份验证请求做到这一点?

类似:code=001&name=AAA 在 URL 中

【问题讨论】:

  • 将参数添加到url,例如url += "?" + code=001&name=AAA"。这有点难看,所以可能(希望)有更优雅的方法来构建HttpGet 中使用的字符串。这些参数也应该被正确编码。
  • @AndrewS 我怎样才能做得更优雅?
  • This 应该会有所帮助。
  • @AndrewS 非常感谢!这正是我要找的!

标签: java api get


【解决方案1】:

使用URIBuilder 构建您的网址

import org.apache.http.client.utils.URIBuilder;
//...
final String URI_PARAM_CODE = "code";
final String URI_PARAM_NAME = "name";

String code = "001";
String name = "AAA";

URI uri = new URIBuilder("http://google.com")
    .setParameter(URI_PARAM_CODE, code)
    .setParameter(URI_PARAM_NAME, name)
    .build();

您还可以在调用URIBuilder::build 之前设置其他有用的属性 - 请参考Apache URIBuilder documentation

【讨论】:

    猜你喜欢
    • 2015-09-21
    • 2019-10-26
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2015-07-20
    • 2012-11-29
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多