【问题标题】:PostMethod setRequestBody(String) deprecated - why?不推荐使用 PostMethod setRequestBody(String) - 为什么?
【发布时间】:2010-01-19 09:38:23
【问题描述】:

我正在使用 Apache Commons HttpClient PostMethod 3.1。

在 PostMethod 类中也有三种方法可以设置 POST 方法的请求体:

setRequestBody(InputStream body)
setRequestBody(String body)
setRequestBody(NameValuePair[] parametersBody);

NameValuePair API

前两种方法已弃用。有人知道为什么吗?因为如果我想将 XML 放到请求正文中,NameValuePair 对我没有帮助。

有人知道变通方法或解决方案吗?

【问题讨论】:

    标签: java request apache-commons-httpclient


    【解决方案1】:

    javadoc 说:

    已弃用。使用 setRequestEntity(RequestEntity)

    RequestEntity 的实现者很多,分别是:

    ByteArrayRequestEntity、FileRequestEntity、InputStreamRequestEntity、MultipartRequestEntity、StringRequestEntity

    选择适合你的:

    等等。

    【讨论】:

    • StringRequestEntity 在建议中找不到。
    【解决方案2】:

    是的,例如,

    post.setRequestEntity( new StringRequestEntity( xml ) );
    

    而不是

    post.setRequestBody( xml );
    

    【讨论】:

    • 不幸的是,构造函数StringRequestEntity(String) 现在也被弃用了。相反,您必须使用:post.setRequestEntity(new StringRequestEntity(xml, "text/xml", "ISO-8859-1"));
    猜你喜欢
    • 2016-02-23
    • 2017-11-04
    • 2011-10-22
    • 2011-04-11
    • 2021-10-12
    • 2012-12-07
    • 2012-05-16
    • 2020-06-29
    • 2014-08-11
    相关资源
    最近更新 更多