gpt4 book ai didi

Android:以编程方式创建和发送 XML SOAP 请求

转载 作者:搜寻专家 更新时间:2023-11-01 09:00:29 25 4
gpt4 key购买 nike

您好,提前致谢。我找到了本教程并尝试模拟它:http://lalit3686.blogspot.com/2012/06/calling-soap-webservice-using-httppost.html .在我的 iOS 应用程序中,我能够创建一个具有 xml 属性的字符串,将其作为 SOAP 请求发送,并获得字符串形式的 xml 响应。我正在尝试用我的 Android 应用程序做同样的事情。

不幸的是有些东西不起作用。我附上了相关代码。

    StringBuilder stringBuilder = new StringBuilder ();
stringBuilder.append(String.format("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
"xmlns:csr=\"http://www.mywebsite.net/\">\n" +
"<soapenv:Header/>\n" +
"<soapenv:Body>\n" +
"<csr:www.mywebsite.net><![CDATA[\n" +
"<www.mywebsite.net>\n" +
"<Request>\n" +
"<user>%s</user>\n" +
"<password>%s</password>\n" +
"<Function>requestdata</Function>\n" +
"<FromDate>2013-01-01</FromDate>\n" +
"<ToDate>2014-01-01</ToDate>\n" +
"</Request>\n" +
"</www.mywebsite.net>\n" +
"]]></csr:www.mywebsite.net>\n" +
"</soapenv:Body>\n" +
"</soapenv:Envelope>\n", username, password));

String xml = stringBuilder.toString();
HttpPost httpPost = new HttpPost("http://www.mywebsite.net/");
StringEntity entity;
String response_string = null;

try {

entity = new StringEntity(xml, HTTP.UTF_8);
httpPost.setHeader("Content-Type","text/xml;charset=UTF-8");
httpPost.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(httpPost);
response_string = EntityUtils.toString(response.getEntity());
Log.d("request", response_string);
prefs.edit().putString("response", response_string).commit();

}

catch (Exception e) {
e.printStackTrace();
}

编辑:问题已解决。我收到错误:

android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099).

上面的代码有效 - 只需确保将此代码包含在您的 onCreate() 方法中即可。

 if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

这允许您将主线程用于 SOAP 请求/响应。

最佳答案

我遇到了错误:

android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)。

我用谷歌搜索了这个错误并找到了这个链接:DefaultHttpClient to AndroidHttpClient - 这建议我在我的 onCreate 方法中包含以下代码。

if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

现在可以正常工作了。事实上,Android 不再让网络操作在主线程上执行。

关于Android:以编程方式创建和发送 XML SOAP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15425736/

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