2

当我调用网络服务时,我会在该 url 中传递某些值。

例子:

https://website.com/webserviceName/login?userName=user&password=pass

但是如果这些值中包含“&”怎么办。当我形成这样一个包含带有“&”的项目的 url 时,该 url 在该点中断会返回一个错误代码。我该如何解决这个问题。

例子:

https://website.com/webserviceName/login?userName=user&user&password=pass

这个网址的问题是它在第一个'&'处中断

该问题可以通过使用URLEncoder.encode(urlXml) http://www.tutorialspoint.com/html/html_url_encoding.htm来解决

谢谢大家

4

3 回答 3

3

您必须使用 对& 符号进行编码。所以你的网址会变成&%26

https://website.com/webserviceName/login?userName=user%26user&password=pass

如果您的用户名不固定并且您想URLEncoder.encode按照@SudhanshuUmalkar 的建议使用,您应该只对参数进行编码

String url = "https://website.com/webserviceName/login?userName="
             + URLEncoder.encode(userName, "UTF-8") + "&password="
             + URLEncoder.encode(password, "UTF-8");

由于encode(String)已弃用,您应该使用encode(String, "UTF-8")或任何您的字符集。

于 2013-03-14T10:12:04.673 回答
2

使用 URLEncoder.encode() 方法。

url = " https://website.com/webserviceName/login ?" + URLEncoder.encode("userName=user&user&password=pass", "UTF-8");

于 2013-03-14T10:11:48.013 回答
0

我有使用文字和符号的代码。您的代码可能会因为您没有提供有效的键值参数对而中断:

https://website.com/webserviceName/login?userName=user&user&password=pass
                                                       ^ this shouldn't be like this

下面的代码在生产中工作:

public static final String DATA_URL = "http://www.example.com/sub/folder/api.php?time=%s&lang=%s&action=test";
String.format (API.DATA_URL, "" + now, language)
于 2013-03-14T10:14:59.323 回答