gpt4 book ai didi

java - 在java中发出HttpClient请求

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:37 26 4
gpt4 key购买 nike

我正在创建一个数据下载器,自从使用 httpClient 以来它一直给我带来问题

此代码将所需的所有变量附加​​到 URL:

   private void createOpenSession() {
String params = new StringBuilder()
.append("?u=").append(this.user)
.append("&p=").append(this.password)
.append("&q=").append(this.qualifier)
.toString();
this.openSession = new HttpGet(this.target + params);

}

每当我调用openSession时,它都会以简单的方式打印出标题(正是我需要它做的)...

   public void start() throws ClientProtocolException, IOException  {

try {
HttpResponse response = this.httpClient.execute(this.openSession);
if (response.getStatusLine().getStatusCode() == 200) {
try {
String responseContent = this.readResponse(response);
System.out.println(responseContent);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}}
finally {
createCloseSession();
}
}

这打印了一行Thisdude:cool3r,但是当我发出另一个打印长行的请求时,它总是会带来这个错误:

    Exception in thread main
java.lang.IllegalArgumentException: HTTP request may not be null
at org.apache.http.util.Args.notNull(Args.java:54)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:81)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at com.si.data.client.ProxyClient1.start(ProxyClient1.java:72)
at com.si.data.client.IpcClient.main(IpcClient.java:136)

这是给出错误的第二个请求:

    private void createCurrencyPairsRequest(String currencyPairs) throws IOException {
if (this.sessionId == null) {
this.refreshSessioId();
}
String params = new StringBuilder()
.append("?id=").append(this.sessionId)
.append("&c=").append(currencyPairs)//The Pairs is an array
.append("&f=").append(this.format)
.toString();
this.requestCurrencies = new HttpGet(this.target + params);
}

我在 currencyPairsRequest() 中做错了什么吗?感谢您抽出宝贵的时间..

最佳答案

我通过调试 currencyPairsRequest() 解决了这个问题。这就是我解决这个问题的方法...我将 currencyPairsRequest() 返回类型从 void() 更改为 HttpGet

   private HttpGet createCurrencyPairsRequest(String currencyPairs) throws IOException {
if (this.sessionId == null) {
this.refreshSessioId();
}
String params = new StringBuilder()
.append("?id=").append(this.sessionId)
.append("&c=").append(currencyPairs)
.append("&f=").append(this.format)
.toString();
this.requestCurrencies = new HttpGet(this.target + params);
return requestCurrencies;
}

然后,我使用以下方法调用了 `currencyPairsRequest():

System.out.println(requestCurrencies);

在发起任何请求之前从main()...而且,它打印了 null,这意味着我从昨天开始就一直在发送 null 请求。因此,我更改了请求,不使用 requestCurrency,而是调用函数本身并返回其值...

谢谢大家..

关于java - 在java中发出HttpClient请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32584869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com