java - Java 和 Android 中的 Asp.net API

标签 java android asp.net xml http-get

所以我正在尝试联系一个需要参数作为 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/

相关文章:

java - 在Java中计算附加值

java - 如何使用运行时加载的属性参数化 ehcache.xml?

c# - 限制 HttpModule 只处理某些请求

c# - 将 PHP 函数转换为 C#

c# - 带有输出缓存的私有(private) Controller 操作结果

java - 如何让我的代码来查找 Java 数组中的数字是否重复?

java - apache openmeetings 与 JSP 的集成

android - 如何在自定义日期时间开始通知?

android - CardView 在 RecyclerView 中选择背景色

安卓 NFC : How to route APDUs for one certain AID to secure element UICC (Off-Host-Routing)