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