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

在线束响应中对特殊字符进行编码

周阳波
2023-03-14

我面临的一个场景是,字符“ᦙ”偶尔会从我的okhttp请求中返回,这个字符会导致一些下游问题。因此,我添加了代码来删除这个字符,如果它存在,我想添加一个测试用例,以确保这一工作正常。问题是wiremock似乎不喜欢这个特殊的角色。

通常我会这样从响应中提取数据:

           String stringifiedResponse = response.getResponseString();

        if (response.isSuccessful()) {

            custResp = response.getData();

通常这适用于我所有的请求。但是,当我设置wiremck以返回带有特殊字符的响应时(即使是单个响应,我想用许多不同的字段进行测试),字符串化响应确实有响应,但数据为空。

这是我如何在我的测试类中设置模拟的

    public static void mockCPInvalidChars(String ssn) {

    String customerPrefillPrimaryOwnerRequest = " {\n" +
            "  \"customers\": [\n" +
            "    {\n" +
            "      \"partyId\": \"" + ssn + "\",\n" +
            "      \"idType\": \"LID\"\n" +
            "    }\n" +
            "  ]\n" +
            "}";

    String partyId =
            ssn.substring(0, 3) + "-"
                    + ssn.substring(3, 5) + "-"
                    + ssn.substring(5, 9);

    String customerPrefillPrimaryOwnerResponse = "{\"totalRecords\":1,\"customers\":[{\"partyId\":\"" + partyId + "\",\"idType\":\"LID\",\"sourceCode\":\"ICS\",\"firstName\":\"R�EEVES\",\"lastName\":\"WI�CKLIFF\",\"address1\":\"59 Ma�iling LANE\",\"address2\":\"ma�l2\",\"address3\":\"mail�3\",\"address4\":\"mai�l4\",\"city\":\"Mai�l\",\"state\":\"M�A\",\"zipCode\":\"010�10\",\"primaryPhone\":\"817504�0350\",\"alternatePhone\":\"81750�40351\",\"birthDate\":\"1902-0�2-10\",\"foreignIndicator\":\"N\",\"alternateAddress1\":\"88 LEG�AL LANE\",\"alternateAddress2\":\"leg�al2\",\"alternateAddress3\":\"lega�l3\",\"alternateAddress4\":\"lega�l4\",\"alternateCity\":\"LEG�AL\",\"alternateZipCode\":\"020�20\",\"alternateState\":\"L�A\",\"alternateForeignIndicator\":\"N\",\"mailTo\":\"\",\"alternateMailTo\":\"\",\"institutionId\":\"N\",\"taxId\":\"" + ssn + "\",\"taxIdIssuer\":\"S\"}]}";

    stubFor(post(urlEqualTo("/my/url"))
            .withRequestBody(equalToJson(customerPrefillPrimaryOwnerRequest))
            .withHeader("Authorization", equalTo("Bearer " + OauthService.getOauthToken().orElse(new OauthToken()).getAccess_token()))
            .willReturn(aResponse()
                    .withStatus(200)
                    .withHeader("Content-Type", "text/xml")
                    .withHeader("Content-Length", String.valueOf(customerPrefillPrimaryOwnerResponse.length()))
                    .withBody(customerPrefillPrimaryOwnerResponse)));
}

共有1个答案

司马弘益
2023-03-14

您的问题来自未转义替换字符。

翻译成< code>\uFFFD,但是您还需要对转义符(silly JSON)进行转义,这样它就变成了< code>\\uFFFD,或者在另一个字符串< code > " na \ \ uff dthan " 的中间

 类似资料:
  • 相关网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shot/

  • 我正在尝试对GsonConverterFactory使用Retrofit2,问题是这是我从okhttp: 因此,我得到以下例外: java.lang.IllegalStateException:应为BEGIN_OBJECT,但在第1行第2列为字符串 如何删除特殊字符和回车与改装2?

  • 问题内容: 我需要使用Java代码对URL进行编码,以避免使用特殊字符,例如空格和%和&… etc 问题答案: URL的构造很棘手,因为URL的不同部分对允许使用什么字符有不同的规则:例如,加号保留在URL的查询部分中,因为它表示空格,但在URL的路径部分中保留了一个空格。加号没有特殊含义,空格编码为“%20”。 RFC2396解释(在2.4.2节中),完整的URL始终采用其编码形式:您获取各个组

  • 问题内容: 我的python(2.7版)脚本运行良好,可以从本地html文件中获取一些公司名称,但是当涉及到某些特定的国家/地区名称时,则会出现此错误“UnicodeEncodeError:’ascii’编解码器无法编码字符” 此公司名称到来时特别出错 公司名称: KühlfixKälteanlagenIng。Gerhard Doczekal&Co. KG 链接无法处理 错误显示在这行代码中: 问

  • 出于测试的目的:当它解析数据时,我将一些数据输出到一个呈现完美的浏览器。。 然后我试着用php将它写到一个文件中,如下所示- 和 和

  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy