gpt4 book ai didi

android - 如何将本地主机 SOAP web 服务连接到我的 android

转载 作者:行者123 更新时间:2023-11-29 01:49:39 25 4
gpt4 key购买 nike

My server image

我正在研究 webservice 我对 web 服务没有任何想法。我看相同的示例 web 服务(如实时 SOAP 服务)工作正常。我要在本地主机中运行网络服务 我不知道我的 URL、命名空间和方法名称是否声明正确

以下代码是我的WSDL代码

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"   
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xs0="http://www.processmaker.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
targetNamespace="http://www.processmaker.com">
<types>
<xs:schema elementFormDefault="qualified"
targetNamespace="http://www.processmaker.com">
<xs:element name="login">
<xs:complexType>
<xs:sequence>
<xs:element name="userid" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</definitions>

调用上述服务的android代码:

public class MainActivity extends Activity {
String str = null;
private static final String SOAP_ACTION = "http://www.processmaker.com/Login";
private static final String METHOD_NAME = "Login";
private static final String NAMESPACE = "http://www.processmaker.com/";
private static final String URL = "http://192.168.1.5/sysworkflow/en/neoclassic/setup/main";
SoapObject request;
TextView tv;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.textView1);


DownloadWebPageTask task = new DownloadWebPageTask();
task.execute();
}


private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";

try {
request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo weightProp = new PropertyInfo();
weightProp.setName("USER_ID");
weightProp.setValue("admin");
weightProp.setType(String.class);
request.addProperty(weightProp);

PropertyInfo fromProp = new PropertyInfo();
fromProp.setName("PASSWORD");
fromProp.setValue("admin");
fromProp.setType(String.class);
request.addProperty(fromProp);

/*
* PropertyInfo toProp =new PropertyInfo(); toProp.setName("ToUnit");
* toProp.setValue(toUnit); toProp.setType(String.class);
* request.addProperty(toProp);
*/
final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
final HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

try {
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response1 = (SoapPrimitive) envelope.getResponse();
Log.i("myApp", response1.toString());
// tv.setText(response.toString());
Toast.makeText(getApplicationContext(), response.toString(),
Toast.LENGTH_LONG).show();

} catch (Exception e) {
tv.setText(e.toString());

e.printStackTrace();

}
}

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

@Override
protected void onPostExecute(String result) {
tv.setText(result);
}
}

请有人帮我做这件事..

最佳答案

你好,像这样使用。

 private static final String SOAP_ACTION = "http://www.processmaker.com/Login";
private static final String METHOD_NAME = "Login";
private static final String NAMESPACE = "http://www.processmaker.com";
private static final String URL = "http://10.0.2.2/sysworkflow/en/classic/services/wsdl2";

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("userid", "admin");
request.addProperty("password", "admin");

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);

HttpTransportSE ht = new HttpTransportSE(URL);

try {
ht.call(SOAP_ACTION, envelope);
final SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
str = response.toString();

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

}
Log.d("WebRespone", str);

希望对您有所帮助。

关于android - 如何将本地主机 SOAP web 服务连接到我的 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019930/

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