gpt4 book ai didi

java - Java 和 Android 中的 Asp.net API

转载 作者:行者123 更新时间:2023-11-29 08:58:29 26 4
gpt4 key购买 nike

所以我正在尝试联系一个需要参数作为 xml 字符串的 asp.net API:/v3/publicservice.asmx/GetSearchResultAdvancedXml?queryXml=string

http://api.tradera.com/v3/publicservice.asmx?op=GetSearchResultAdvancedXml

事情是,我收到这条消息:“从客户端检测到具有潜在危险的 Request.QueryString 值。”

这显然是通过以下方式解决的: https://stackoverflow.com/a/2673905/585137

<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>

我想通过 Http get 在 android java 中以某种方式提交这个。

如何发送 requestValidationMode="2.0"?

最佳答案

一种方法是将您作为参数发送的 XML 转义。如果您从另一个 ASP.NET 应用程序发送 XML,您可以使用:Uri.EscapeDataString。根据这篇博文 (C# Uri.EscapeDatastring() equivalent for Java),您必须使用 Java 的 URL 或 URI 类来转义稍后可以在 ASP.NET 应用程序中使用的字符串。但是,java.net.URL 和 java.net.URI 不允许您转义 XML。因此,您可以执行以下操作:

1] 将此方法添加到您的 Java 代码中。这是我在此处找到的代码的修改版本:https://stackoverflow.com/a/10035382/2168278 .您可以按照帖子中的建议使用 XML 库。

public static String xmlEscapeText(String t) 
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < t.length(); i++){
char c = t.charAt(i);
switch(c){
case '<': sb.append("%3C"); break;
case '>': sb.append("%3E"); break;
case '\"': sb.append("%22"); break;
case '&': sb.append("%26"); break;
case ' ': sb.append("%20"); break;
case '/': sb.append("%2F"); break;
default:
if(c>0x7e) {
sb.append("&#"+((int)c)+";");
}else
sb.append(c);
}
}
return sb.toString();
}

2] 在您的 ASP.NET 代码(我假设是 C#)中,您可以通过以下方式获取 XML:

var myXML = Uri.UnescapeDataString(op);

我使用这段 XML 测试了我的代码:

<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>

我从这里得到的:http://www.w3schools.com/xml/note.xml

关于java - Java 和 Android 中的 Asp.net API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com