当前位置: 首页 > 知识库问答 >
问题:

在Java中使用HttpURLConnection发送特殊字符

薛滨海
2023-03-14

我有一个网络服务,我想用“应用/x-www-表单-urlencoded”内容类型调用它。请求有时包含特殊字符,如*-和......问题是目标Web服务不能完美地接收请求。它接收类似这样的: "////////////////w=="几乎所有字符都转到/。到底是什么问题?

这是我的密码:

        URL url = new URL("a-web-service-url");
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setDoInput(true);
        httpURLConnection.setDoOutput(true);
        httpURLConnection.setUseCaches(false);
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(httpURLConnection.getOutputStream(), "UTF-8");
        outputStreamWriter.write("test=/-+*=!@#$%^&*()_");
        outputStreamWriter.flush();
        InputStream inputStream = httpURLConnection.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        StringBuilder stringBuilder;
        String line;
        for (stringBuilder = new StringBuilder(); (line = bufferedReader.readLine()) != null; stringBuilder = stringBuilder.append(line)) {
            ;
        }

        bufferedReader.close();
        httpURLConnection.disconnect();
        String response = stringBuilder.toString().trim();

web服务接收:

test=////////////////w==

共有1个答案

濮阳征
2023-03-14

发送前使用URLEncoder对字符串进行编码。

URLEncoder.encode(message, "UTF-8" );

在这种情况下,它将是

outputStreamWriter.write(URLEncoder.encode("test=/-+*=!@#$%^&*()_", "UTF-8" ));
 类似资料:
  • 问题内容: 如何在Java / Eclipse中使用/显示♥,♦,♣或like等字符? 当我尝试直接使用它们时,例如在源代码中,Eclipse无法保存文件。 我能做什么? 编辑:如何找到Unicode转义序列? 问题答案: 问题在于,您使用的字符无法在文件设置为(Cp1252)的编码中表示。从我的角度来看,您基本上有两个选择: 选项1. 更改编码。 根据IBM的介绍,您应该将编码设置为UTF-8。

  • 我正在使用以下代码发送GET api请求。下面的url有一个参数,例如字符串url=”https://my/api“variable”test。我使用for循环遍历变量列表(超过2000个),并创建url以使用以下代码发送get API请求。我想并行发送多个API请求以减少总时间。请建议最好的方法。

  • 我试图使用身份验证值发送响应到服务器,它在登录时提供给我。服务器仅在发送该值时接受请求。然而,它可以很好地与邮递员(见快照),但不与我的代码。 密码 我也试过这样做

  • 问题内容: 我无法在Elasticsearch中以特殊字符结尾/开头的字符进行搜索。就像“ 123456!” 我的映射是 它给我错误,我可以在搜索查询(或映射)中做什么,以便特殊字符将被视为搜索字符串的一部分? 问题答案: 由于您的字段是(好!),请尝试用双引号引起来进行完全匹配: 这样做的另一种方法是在查询中设置分析器(但请务必转义,因为它是保留字符(对于操作员)

  • 问题内容: 我的应用程序正在使用这样的NSURL: 当我试图做一个从这个NSURL获取数据的任务时,如下所示: 但是尝试从该地址获取数据时出现错误,尽管当我使用野生动物园去链接时:“ http://www.geonames.org/search.html?q =Aïn+Béïda+ Algeria&country =“我可以看到数据。我该如何解决? 问题答案: 迅捷2 编码的URL现在是: “ h

  • 问题内容: 我正在阅读文件,但我不知道如何阅读口音和特殊字符,这是我阅读的代码,我必须添加其他编纂,但我不知道该怎么做 谢谢 问题答案: 请尝试以下操作: