标签: android-ksoap2

适用于Android和iOS的相互证书的邮件安全性

我想问以下问题.我们有一个Android和iOS移动应用程序,用于与.NET服务器交换数据.

对于Android,使用kso​​ap2库,而对于iOS,使用带有AEXML库的Alamofire.

我们希望为服务器和应用程序之间的通信启用加密,特别是具有相互证书的Message Security(https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/message-security - 相互证明)

我无法找到任何有关Android或iOS客户端如何加密/解密请求/响应的信息.

能否请您提供相关信息?

提前致谢!

wcf android wcf-security ios android-ksoap2

10
推荐指数
1
解决办法
446
查看次数

在Android中调用.NET Web服务

我的.NET Web服务返回一个XML.当我在Android中使用kso​​ap2调用Web服务时,我遇到了这个问题.请帮忙.

我在Eclipse中的Logcat

12-19 15:58:11.951: W/dalvikvm(2041): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-19 15:58:11.961: E/AndroidRuntime(2041): FATAL EXCEPTION: main
12-19 15:58:11.961: E/AndroidRuntime(2041): java.lang.RuntimeException: double ID
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:407)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:151)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:116)
12-19 15:58:11.961: E/AndroidRuntime(2041):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:259) …
Run Code Online (Sandbox Code Playgroud)

android web-services ksoap2 android-layout android-ksoap2

8
推荐指数
1
解决办法
3357
查看次数

将复杂参数从ksoap Android传递到WCF Web服务

我从ksoap调用.NET WCF Web服务我的WebMethod采用一个复杂的参数UpdatableCustomerInfo

public class UpdatableCustomerInfo implements KvmSerializable {

public String CustomerId;
public String Facebook;

@Override
public Object getProperty(int arg0) {
    String retVal = "";
     switch(arg0)
        {
        case 0:
            retVal = CustomerId;
            break;

        case 1:
            retVal = Facebook;
            break;
        }

        return retVal;
}

@Override
public int getPropertyCount() {
    return 2;
}

@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
     switch(arg0)
        {
        case 0:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "CustomerId";
            break;
        case 1:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "Facebook"; …
Run Code Online (Sandbox Code Playgroud)

java wcf android soap android-ksoap2

7
推荐指数
2
解决办法
4201
查看次数

.net web服务在数据开头返回NULL对象

我有Web服务,它返回XML数据.但在数据中,我在它的开头接收到Null字段.实际数据也可用,但后面跟着Null字段.我正在使用kso​​ap2访问Android中的web服务.SoapObject变量具有完整数据,但也具有那些空字段,这对于使用此服务有点创建问题.在这里你可以看到,在开始它没有什么,但后来它有数据以标签"标题"开头

04-12 10:55:09.405: D/ENVELOPE(1394): GetGuestEventsListingForServiceResponse{GetGuestEventsListingForServiceResult=anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=anyType{complexType=anyType{sequence=anyType{element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; }; }; }; }; }; }; }; diffgram=anyType{NewDataSet=anyType{Table=anyType{Title=THE CLUSTER DAY-1,  JUNKOVATION; Description=anyType{}; EventDate=Apr 12, 2013; EventTime=5:00 PM; Venue=BLOCK 13-306; CreatedBy=16689; CreatedOn=2013-04-11T09:52:07.163+05:30; EventFor=All; Type=Internal; IsActive=true; };  
Run Code Online (Sandbox Code Playgroud)

asp.net android web-services android-ksoap2

7
推荐指数
1
解决办法
224
查看次数

使用kso​​ap2-android的不受信任的证书

我正在使用kso​​ap2-android通过SSL调用wcf服务.我可以在没有SSL的情况下使用它,但现在我想通过SSL进行调用,但我遇到了一些问题.

我正在使用HttpsTransportSE而不是HttpTransportSE,但我收到错误:javax.net.ssl.SSLException:不受信任的服务器证书

我怎样才能解决这个问题?

我可以将服务器证书添加到Android中的Keystore来解决问题吗?

private static final String SOAP_ACTION = "http://example.com/Service/GetInformation";
private static final String METHOD_NAME = "GetInformation";
private static final String NAMESPACE = "http://example.com";    
private static final String URL = "dev.example.com/Service.svc";

public static Result GetInformation()
{
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

    PropertyInfo property = new PropertyInfo();
    property.name = "request";

    Request request =
        new Request("12", "13", "Ben");

    userInformationProperty.setValue(request);
    userInformationProperty.setType(request.getClass());
    request.addProperty(property);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    envelope.addMapping(NAMESPACE, "Request",new Request().getClass());

    HttpsTransportSE transport = new HttpsTransportSE(URL, 443, "", …
Run Code Online (Sandbox Code Playgroud)

ssl https android soap android-ksoap2

6
推荐指数
2
解决办法
2万
查看次数

使用java在Android项目中获取计算机的IP地址

我正在使用ksoap2-android,我需要使用java获取IP地址,这样我就不必每次都手动输入.

我的意思是IP地址,例如,如果我使用命令shell 执行ipconfig:
特定于连接的DNS后缀.:
链接本地IPv6地址.....:f0 :: ed2:e3bf:8206:44%13
IPv4地址...........:192.168.1.107 < - 这个
子网掩码...........:255.255.255.0
默认网关.........:192.168.1.1

事情是开发一个Android应用程序,模拟器有一个不同类型的IP比机器的.
我需要获得机器的IP,这是怎么做到的?

非常感谢

java ip android ip-address android-ksoap2

6
推荐指数
1
解决办法
1万
查看次数

如何在android中使用kso​​ap超时?

我正在使用kso​​ap2在Android中创建用户注册应用程序.

当我向服务器发送请求并且在10秒内没有响应时,我想用"再试一次"消息提示用户.如果服务器在10秒内响应,我希望程序在没有消息的情况下继续.

我怎样才能做到这一点?在KSoap2中是否有TimerTask或任何Timeout方法?

android ksoap2 android-ksoap2

6
推荐指数
1
解决办法
1万
查看次数

如何使用kso​​ap2-android正确调用我的PHP Web服务?

到目前为止,我已经创建了一个PHP客户端和一个VB.NET客户端,它们都成功调用了我的PHP Web服务.为了让后者工作,我需要使用SourceForge中的SoapUI工具.它告诉我,我的wsdl不符合WS-I.我不需要Pro版本以交互方式测试我的服务,因为它允许您直接编辑soap请求.修复我的WSDL并让我的VB.Net客户端运行android仍然是一个问题.

我还附上了ksoap2-andriod的源代码,以便我可以在调试时逐步完成.它有一点帮助,但是没有包含源的捆绑依赖项,特别是"kxml2 v1.6".如果有人能指出我的源拉链或罐子,我会很感激.

这是我从Android客户端调用PHP Web服务时无法解决的错误.

  org.xmlpull.v1.XmlPullParserException: expected: START_TAG   {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <definitions name='naturallyIrrationalsoapserver' targetNamespace='http://www.naturallyIrrational.com'>@10:42 in java.io.InputStreamReader@44dce560)
Run Code Online (Sandbox Code Playgroud)

它告诉我它无法解析WSDL\XML - poistion @ 10.42是开放定义标记的结尾.

我相信,作为现在符合WS-I的WSDL,问题是由Ksoap2解释的这个服务命名空间定义.这是我用来调用它的android客户端代码.

public class SoapClientActivity extends Activity {
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = (TextView) findViewById(R.id.myText);
        String soapResponse="";
        final String METHOD_NAME = "getArrval";
        final String SOAP_ACTION = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.wsdl";
        final String NAMESPACE = "http://www.naturallyIrrational.com";
Run Code Online (Sandbox Code Playgroud)

*下一行不正确,应指向 http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.php*

        final String URL = "http://www.naturallyIrrational.com/naturallyIrrationalsoapserver.wsdl";

        if (InternetStatus.getInstance(this).isOnline(this)) {

            try{                            
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); …
Run Code Online (Sandbox Code Playgroud)

php android soap android-ksoap2

6
推荐指数
1
解决办法
2140
查看次数

重新调整complexType对象时,SoapObject Result将anyType {}作为值返回

我打电话在我的Android应用程序的网络服务和方法是getGramaNiladhariData(),我得到的结果作为SoapObject.

result = (SoapObject) envelope.bodyIn;  Log.d("WS", String.valueOf(result));
Run Code Online (Sandbox Code Playgroud)

这就是我得到的 String.valueOf(结果)

getGramaNiladhariDataResponse {getGramaNiladhariDataResult = anyType的{gnName = anyType的{}; 地址= anyType的{}; workingDays = anyType的{}; gnDivision = anyType的{}; contactNumber = anyType的{}; }; }

这里我调用的方法返回一个complexType对象,由5个属性组成.正如我在互联网上发现的那样,我无法获得soap对象作为返回complexType对象的webservice方法的结果.如果是这样,我应该如何获取值.

我想要解决的是为什么我得到anyType {},作为值,而不是实际值.任何帮助,将不胜感激

android android-ksoap2

6
推荐指数
1
解决办法
1万
查看次数

在kSoap2中使用TLS1.2客户端证书

我正在尝试使用kSoap2和EasyWSDL将我的Android应用程序连接到受TLS保护的SOAP端点,但我收到以下异常:

W/System.err: javax.net.ssl.SSLHandshakeException: Connection closed by peer
                  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
                  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:351)
                  at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
                  at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
W/System.err:     at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
                  at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
                  at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
                  at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
                  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
                  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
                  at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
                  at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(Unknown Source:0)
                  at org.ksoap2.transport.HttpsServiceConnectionSE.openOutputStream(HttpsServiceConnectionSE.java:127)
                  at com.easywsdl.exksoap2.mtom.MTOMTransportImplementation.sendData(MTOMTransportImplementation.java:65)
                  at com.easywsdl.exksoap2.transport.AdvancedHttpsTransportSE.sendData(AdvancedHttpsTransportSE.java:39)
                  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:184)
                  at com.easywsdl.exksoap2.transport.AdvancedHttpsTransportSE.call(AdvancedHttpsTransportSE.java:51)
Run Code Online (Sandbox Code Playgroud)

以下是我配置传输的方式:

@Override
    protected Transport createTransport() {
        Transport transport = super.createTransport();
        try {
            if(transport instanceof HttpsTransportSE) {
                HttpsTransportSE httpsTransport = (HttpsTransportSE)transport;
                if(httpsTransport.getServiceConnection() instanceof HttpsServiceConnectionSE) {
                    HttpsServiceConnectionSE httpsServiceConnection = (HttpsServiceConnectionSE)httpsTransport.getServiceConnection();
                    httpsServiceConnection.setSSLSocketFactory(getSSLSocketFactory()); …
Run Code Online (Sandbox Code Playgroud)

android soap android-ksoap2 tls1.2

6
推荐指数
1
解决办法
391
查看次数