【问题标题】:Do I need to escape a string which is post parameters to pass in HTTP body?我是否需要转义一个字符串,该字符串是传递 HTTP 正文的 post 参数?
【发布时间】:2013-06-24 11:59:39
【问题描述】:

我使用 HTTPUrlConnection 请求 REST API。
我将“内容类型”标头如下:

urlConnection.setRequestProperty("Content-type",
                        "application/x-www-form-urlencoded");

我将 HTTP 正文设置如下:

out = urlConnection.getOutputStream();
out.write(postParameters.getBytes("UTF-8"));

我不知道在设置 HTTP 标头和正文时是否需要转义 post 参数(这是一个字符串),如上所示。

我只需要是或否作为答案,但如果答案能解释为什么是或为什么不是,那就太好了。

【问题讨论】:

    标签: java android escaping httpurlconnection post-parameter


    【解决方案1】:

    由于您要发布的数据将被解释为application/x-www-form-urlencoded,因此它必须具有以下形式:

    name1=value1&name2=value2&...
    

    因此,“值”部分必须经过 URL 编码,否则将无法正确解释。

    将 POST 与 x-www-form-urlencoded 一起使用只是将 URL 的查询字符串部分从请求中移到正文中。

    【讨论】:

    • 感谢您的解释,但我不明白您的意思是否需要转义 POST 参数。另请注意,在设置 HTTP 正文时,我会执行postParameters.getBytes("UTF-8"),如问题所示。
    • 变量postParameter的内容是什么?给我一个例子?另外,您的服务器 API 期望什么?
    • postParamter 的示例是name=Akash&email=example@example.com。我的服务器期望什么是什么意思?
    • 您不能只对整个内容进行 URL 编码。您只需对“值”部分进行 URL 编码。在您的示例中,“Akash”和“example@example.com”需要进行 URL 编码。但是,如果您可以确定这些值中不会出现不可接受的字符,那么您可以跳过 URL 编码。
    • 好的。那么转义 postParameters 呢?如果我对其进行 URL 编码,是否需要对其进行转义?
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多