java - 在android中使用kSOAP连接到web服务

标签 java android android-ksoap2

我正在尝试将 Web 服务与 kSOAP 库连接。代码将用户名和密码、姓名和家庭等 4 个字段发送到服务器,但在服务器中所有内容都收到 null !这是我的代码问题出在哪里? WebService.java

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.util.Log;


public class WebService {
    private static String NAMESPACE = "xxxxxxxxxxxx";
    public final static String URL = "xxxxxxxxxxxx";

    private static String SOAP_ACTION = "xxxxxxxxxxxxxxx";
    private static final String METHOD = "Register";
    public static String invokeWS() {
        String resTxt = null;

        SoapObject request = new SoapObject(NAMESPACE, METHOD);

        request.addProperty("username","user");
        request.addProperty("password","pass");
        request.addProperty("name","MyName");
        request.addProperty("family","MyFamily");
        Log.v("", ""+request);
        SoapSerializationEnvelope envelope = 
                         new SoapSerializationEnvelope( SoapEnvelope.VER12);

        envelope.setOutputSoapObject(request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        try {            
            androidHttpTransport.call(SOAP_ACTION+METHOD, envelope);
            SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
            resTxt = response.toString();
        } catch (Exception e) {        
            e.printStackTrace();
            Log.e("",""+e);
            resTxt = "Error !!!!";
        } 
        return resTxt;
    }
}

并在MainActivity.java中调用invokeWS()

 AsyncCallWS task = new AsyncCallWS();
//Call execute 
task.execute();
private class AsyncCallWS extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
displayText = WebService.invokeWS();
return null;
}
@Override
protected void onPostExecute(Void result) {
//Set response
Log.v("", "Recive : "+displayText);
}
@Override
protected void onPreExecute() {  
}
@Override
protected void onProgressUpdate(Void... values) {
}
}

最佳答案

将此行添加到您的代码中:

envelope.dotNet=true

关于java - 在android中使用kSOAP连接到web服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33780201/

相关文章:

android - 网络绑定(bind)不适用于 jni 代码吗?

android - PropertyInfo.getName() ...等很多方法无法解析

android - 如何在android中发送 SOAP 请求?

java - 使用 Jackson 反序列化带有重复嵌套标签的 xml

java - 使用 Android 选项卡 Intent 启动 Activity 时出现异常

Android 应用程序不兼容但列为兼容

android - 从 2 个数据库添加到 listView 行

android - 如何解决 org.xmlpull.v1.XmlPullParserException : unexpected type (position:END_DOCUMENT null@1:1 in java. io.InputStreamReader@40d310f0)

java - Spring MVC 和请求属性

java - 为什么我可以存储实现接口(interface) "in"该接口(interface)的类的实例而不丢失信息?