首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getParameter()的“逆”方法

getParameter()的“逆”方法
EN

Stack Overflow用户
提问于 2014-03-10 09:56:07
回答 1查看 200关注 0票数 0

发送用户参数的一种方法是将它们附加到URL:

代码语言:javascript
复制
URLAddress+="?param1=value1+param2=value2"

否则,我如何向服务器发送用户参数?这些是HttpServletRequest方法要读取的参数

代码语言:javascript
复制
getParameter(param1);

在接收器的一端。

我试过了

代码语言:javascript
复制
setRequestProperty("param1","value1"); 

HttpURLConnection的。但是,getParameter()无法在请求中找到它们。

我试图将它们发送到URL之外,这样它们就不会被看到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 10:41:23

您只有两种可能性:在GET请求的情况下将它们附加到URL中,然后它们是可见的,或者在POST请求时将它们写成正文:

代码语言:javascript
复制
/**
 * Convert a Map to a query string.
 * @param values the map with the values
 *               <code>null</code> will be encoded as empty string, all other
 *               objects are converted to
 *               String by calling its <code>toString()</code> method.
 * @return e.g. "key1=value&key2=&email=max%40example.com"
 */
public static String queryString(Map<String, Object> values) {
    StringBuilder sbuf = new StringBuilder();
    String separator = "";

    for (Map.Entry<String, Object> entry : values.entrySet()) {
        String value = entry.getValue() == null
                ? "" : String.valueOf(entry.getValue());
        sbuf.append(separator);
        sbuf.append(urlEncode(entry.getKey()));
        sbuf.append('=');
        sbuf.append(urlEncode(value));
        separator = "&";
    }

    return sbuf.toString();
}

static String urlEncode(String value) {
    try {
        return URLEncoder.encode(value, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        return value;
    }
}

如果是POST,则必须将头Content-Type设置为application/x-www-form-urlencoded。我建议使用'UTF-8‘作为编码。如果这不适合您,您必须了解如何处理不同的编码。

所以而不是

代码语言:javascript
复制
http://www.example.com/path/resource?abc=124&xyz=John+Doe

你写身体:

代码语言:javascript
复制
abc=124&xyz=John+Doe

不应该将参数设置为标头(addRequestHeader()),因为大多数中间件(例如,web应用程序防火墙、代理、负载均衡器)解析标头,您可能会与预定义的标头发生冲突。

以上代码取自DavidWebb。在这里,您可以看到一个库列表,当您不得不处理HTTP请求并且不想在本地使用HttpURLConnection时,这些库可以简化您的生活。

为什么我要添加构建查询字符串的代码?

您可以在这里阅读许多问题,因此错误之处在于它们没有正确编码参数名称或值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22296907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档