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 - Rxjava 为什么 Schedulers.trampoline() 命名为 'trampoline' ?

java - Maven在中央存储库上超时-没有代理设置-Windows

android - 如何使用新版本迁移 Android 偏好设置?

c# - 如何操作字符串并从asp.net c#中的列表框绑定(bind)中删除 '\'

asp.net - HttpContextAccessor 线程安全吗?

c# - 如何在 SQL Server 或 ASP.NET C# 中强制执行一定数量或范围的受影响行

java - 为什么同步(此)有效?

java - Windows找不到'\bin\ssvagent.exe'

java - 创建可以像这样调用的java方法 : foo. bar().baz().quux()

android - 隐藏导航栏