Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的URL编码问题_Java_Android_Json_Http Post - Fatal编程技术网

java中的URL编码问题

java中的URL编码问题,java,android,json,http-post,Java,Android,Json,Http Post,以下是我的示例url: url.com/data?format=json&pro={%22merchanturl%22:%22http://url.com/logo.pn‌​g%22,%22price%22:599,%22productDesc%22:%22Apple%2032GBBlack%22,%22prodID%22:%2291‌​3393%22,%22merchant%22:%224536%22,%22prourl%22:%22http://url.com/data%22,%22

以下是我的示例url:

url.com/data?format=json&pro={%22merchanturl%22:%22http://url.com/logo.pn‌​g%22,%22price%22:599,%22productDesc%22:%22Apple%2032GBBlack%22,%22prodID%22:%2291‌​3393%22,%22merchant%22:%224536%22,%22prourl%22:%22http://url.com/data%22,%22name%‌​22:%22Apple%2032GB%20%2D%20Black%22,%22productUrl%22:%22http://www.url.com/image.‌​jpg%22,%22myprice%22:550,%22mercname%22:%22hello%22,%22mybool%22:false}
我有一个android应用程序。我需要将此url发布到服务器。所以服务器会用令牌进行响应。我正在通过应用程序执行httppost。但我没有得到任何回应/例外。如果我复制相同的url并将其粘贴到浏览器中,效果会非常好。我希望我在编码部分犯了错误。有人能指出我的问题吗

以下是我的编码方法:

private String encodeString(String input) {
    String output = new String(input.trim().replace(" ", "%20")
            .replace("&", "%26").replace(",", "%2c").replace("(", "%28")
            .replace(")", "%29").replace("!", "%21").replace("=", "%3D")
            .replace("<", "%3C").replace(">", "%3E").replace("#", "%23")
            .replace("$", "%24").replace("'", "%27").replace("*", "%2A")
            .replace("-", "%2D").replace(".", "%2E").replace("/", "%2F")
            .replace(":", "%3A").replace(";", "%3B").replace("?", "%3F")
            .replace("@", "%40").replace("[", "%5B").replace("\\", "%5C")
            .replace("]", "%5D").replace("_", "%5F").replace("`", "%60")
            .replace("{", "%7B").replace("|", "%7C").replace("}", "%7D")
            .replace("\"", "%22"));
    return output;
}
私有字符串编码字符串(字符串输入){
字符串输出=新字符串(input.trim().replace(“,“%20”)
.replace(“”,“%26”).replace(“”,“%2c”).replace(“”,“%28”)
.replace(“)”,“%29”)。replace(“!”,“%21”)。replace(“=”,“%3D”)
.replace(“,%3E”).replace(“#”,%23”)
.replace(“$”,“%24”)。replace(“,“%27”)。replace(“*”,“%2A”)
.replace(“-”,“%2D”)。replace(“.”,“%2E”)。replace(“/”,“%2F”)
.replace(“:”,%3A”)。replace(“;”,%3B”)。replace(“?”,%3F”)
.replace(“@”,“%40”)。replace(“[”,“%5B”)。replace(“\\”,“%5C”)
.replace(“]”,%5D”)。replace(““,%5F”)。replace(“`,%60”)
.replace(“{”,“%7B”)。replace(“|”,“%7C”)。replace(“}”,“%7D”)
.替换(“\”,“%22”);
返回输出;
}
更新:


我这样做的原因是,我需要以这种格式发送数据。url的参数部分是json数据。如果我对完整的url进行编码,那就不起作用了。

虽然自编编码不错,但我建议使用已被证明有效的内置Java方法

TextUtils包含一个方法htmlEncode(字符串s),仅用于此目的


虽然自编编码不错,但我建议使用已被证明有效的内置Java方法

TextUtils包含一个方法htmlEncode(字符串s),仅用于此目的


尝试使用
urlcoder
,只对
后面的部分编码?

String query = URLEncoder.encode(queryPart, "utf-8");
String url = "http://server.com/search?q=" + query;

尝试使用
urlcoder
,仅对

String query = URLEncoder.encode(queryPart, "utf-8");
String url = "http://server.com/search?q=" + query;

为什么不使用
java.net.urlcoder
()?我试过了。但它不起作用。无论如何,请重新查看它。如果您的方法和浏览器中的URL相同,我打赌问题出在其他地方。为什么不使用
java.net.urlcoder
()?我试过了。但它不起作用。无论如何,请再次查看它。如果您的方法和浏览器中的URL相同,我打赌问题出在其他地方。