Java 用爪哇语&;“curren”;被编码为¤&引用;。如何防止这种情况
我想从Java代码中调用如下Web服务:Java 用爪哇语&;“curren”;被编码为¤&引用;。如何防止这种情况,java,Java,我想从Java代码中调用如下Web服务: ”http://example.com/mytarget?firstParam=xxx¤cy=EUR“ 但不管我做什么。一旦我在其中使用“¤cy=”组合一个字符串,它就会立即被”·cy=“替换,这是Web服务不喜欢的,并以错误响应 为了说明这一点,我使用了一个小代码snipet: String uri = "http://example.com?test=1¤cy=EUR"; HttpGet request =
”http://example.com/mytarget?firstParam=xxx¤cy=EUR“
但不管我做什么。一旦我在其中使用“¤cy=”组合一个字符串,它就会立即被”·cy=“
替换,这是Web服务不喜欢的,并以错误响应
为了说明这一点,我使用了一个小代码snipet:
String uri = "http://example.com?test=1¤cy=EUR";
HttpGet request = new HttpGet(uri); //string got replaced already!
request.addHeader("content-type", "application/json");
HttpResponse result = httpClient.execute(request);
String json = EntityUtils.toString(result.getEntity(), "UTF-8");
上面的代码调用:“http://example.com?test=1·cy=欧元“
类似的问题,没有答案:
有什么想法吗?
或者,是否有一种从Java代码调用Web服务的“正确”方法可以避免此问题?HttpGet必须这样做。也许HttpGet提供了一种不同的机制来添加查询参数。您可以使用
currency
作为第一个参数。不确定这是一个清晰的重复,因为他提供的示例不需要任何编码@OP:为了它的价值,我测试了你的例子,并用Fiddler检查了一下,看看生成了什么URL,它对我来说很好。你确定问题不在于服务本身吗?听起来像是说System.out.println(“¤”)代码>不输出“¤
”。但确实如此。@OP:在事件链中,您在哪里首先注意到URL在您描述的过程中发生了变化?您在java代码中看到了吗?您是否拦截请求并在那里注意到它?你在服务端注意到了吗?HttpGet一定在这么做。也许HttpGet提供了一种不同的机制来添加查询参数。您可以使用currency
作为第一个参数。不确定这是一个清晰的重复,因为他提供的示例不需要任何编码@OP:为了它的价值,我测试了你的例子,并用Fiddler检查了一下,看看生成了什么URL,它对我来说很好。你确定问题不在于服务本身吗?听起来像是说System.out.println(“¤”)代码>不输出“¤
”。但确实如此。@OP:在事件链中,您在哪里首先注意到URL在您描述的过程中发生了变化?您在java代码中看到了吗?您是否拦截请求并在那里注意到它?你注意到服务端有吗?