AbstractHttpMessage getParams().setParameter构造depcrrated~如何现



我正在努力使旧的遗留代码现代化,在这样做的同时,遇到了一些不推荐的构造,我不知道如何处理。它们看起来都有点像:

HttpPost oauthVerificationRequest = new HttpPost(authURL);
oauthVerificationRequest.getParams().setParameter(OAUTH_TOKEN_KEY, oauthToken);
HttpResponse oauthVerificationRequestResponse = client.getHttpClient().execute(oauthVerificationRequest);

在那里,我的IDE抱怨说getParams()setParameter都被弃用了。

事情是这样写的,我完全理解正在发生的事情。不推荐使用的行将请求的关键字为OAUTH_TOKEN_KEY的参数的值设置为oauthToken的值,如果不存在,则可能会创建它。

然而,即使知道这是这行应该发生的事情,我也无法找到一种现代的方式来写这行。我试图弄清楚,但构造AbstractHttpMessage的新方法让我很困惑

既然我通过例子学习得最好,有人能给我一个";翻译";以上代码的新逻辑?

好吧,把我的想法写下来作为一个问题似乎又一次帮助我找到了解决方案。因此,为了回答我自己的问题,在新的逻辑中写上述语句的正确方法是:

URIBuilder oauthVerificationRequestBuilder = new URIBuilder(authUrl);
oauthVerificationRequestBuilder.setParameter(OAUTH_TOKEN_KEY, oauthToken);
HttpPost oauthVerificationRequest = new HttpPost(oauthVerificationRequestBuilder.build());
HttpResponse oauthVerificationRequestResponse = client.getHttpClient().execute(oauthVerificationRequest);

因此,基本上,您首先创建一个构建器,然后在构建器中设置参数,然后使用builder.build()作为参数创建请求。

奖金问题:

是否还有一种方法可以将addHeader()修改引入生成器?因为现在,对我来说,整个结构看起来是这样的,使用参数的构建器,然后在请求的顶部敲击",感觉有点不一致;老式的";方式:

URIBuilder oauthVerificationRequestBuilder = new URIBuilder(authUrl);
oauthVerificationRequestBuilder.setParameter(OAUTH_TOKEN_KEY, oauthToken);
oauthVerificationRequestBuilder.setParameter(OAUTH_VERIFIER_KEY, oauthVerifier);
oauthVerificationRequestBuilder.setParameter(AUTHORIZE_KEY, VALUE_STRING_TRUE);
HttpPost oauthVerificationRequest = new HttpPost(oauthVerificationRequestBuilder.build());
oauthVerificationRequest.addHeader(CONTENT_TYPE_KEY, CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED_UTF_8);

谷歌搜索"java httppost";提供了指向文档的链接。在文档中查找getParams(),显示它是从AbstractHttpMessage继承的,另一个谷歌搜索找到了该类的文档。该文档解释了该怎么做,而不是使用不推荐的方法:

已弃用。(4.3(使用HttpClient 提供的配置API的构造函数参数

我希望这对未来的读者有所帮助。好的库将记录不推荐使用的方法的建议替换内容。查阅文档以获得这些建议总是一个好主意。

通过构建在apachehttp API上的http-request,它非常简单。

HttpRequest httpRequest = HttpRequestBuilder.create(
ClientBuilder.create().build();
)
.build();
Response response = httpRequest.target(authURL)
.addParameter(OAUTH_TOKEN_KEY, oauthToken)
.addParameter(ANOTHER_PARAM, "VALUE")
.addHeader(ANY_HEADER, "VALUE")
.post();

依赖

<dependency>
<groupId>com.jsunsoft.http</groupId>
<artifactId>http-request</artifactId>
<version>2.2.2</version>
</dependency>

最新更新