标签: android-ksoap2

java.io.IOException:HTTP请求失败,HTTP状态:500(ksoap2)

我正在使用KSOAP2,将请求发送到服务器时出现java.io.IOException:HTTP请求失败,HTTP状态:该行中为500 httpTransport.call(SOAP_ACTION, envelope),但是服务器正常工作,我已经使用SoapUI对其进行了检查。可能是什么问题?

public class SOAPClient
{
    private static final int TIMEOUT_SOCKET = 180000;

    public static SoapObject get(Context context, String methodName, ArrayList<Pair<String, ?>> args) throws Exception
    {
        final String URL = PrefHelper.getSOAPUrl(context);
        final String NAMESPACE = PrefHelper.getSOAPNamespace(context);
        final String SOAP_ACTION = methodName; //NAMESPACE + "#" + "mapx" + ":" + methodName;

        SoapObjectEve request = new SoapObjectEve(NAMESPACE, methodName);

        if (args != null) {
            for (Pair<String, ?> arg : args) {
                if (arg.first != null) {
                    request.addProperty(arg.first, arg.second);
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java android ksoap android-ksoap2

5
推荐指数
0
解决办法
3369
查看次数

Web服务Http身份验证 - Android上的KSOAP2

我一直在网上搜索一段时间,但无法为我的问题找到合适的解决方案.这篇文章也没有真正帮助,因为在ksoap2 for android中使用的类和方法不存在:使用KSOAP for android的基本HTTP身份验证

我正在尝试访问我在sap soa管理器中设置的SAP Web服务.Web服务需要http头中的基本身份验证.通过soapUI访问此Web服务不是问题,因为可以在那里设置http身份验证.

我的问题:我想使用Android设备访问Web服务,我想使用KSOAP2 for Android,因为我已经有了一些使用该库的经验.我的问题是我不知道如何对webservice进行身份验证?

有没有人有类似的问题,知道如何解决它?如果你能帮助我,我将不胜感激!

authentication android web-services http-headers android-ksoap2

4
推荐指数
1
解决办法
9695
查看次数

如何使用kso​​ap2将String数组传递给webservice?

我在Android中使用Web客户端,ksoap2但我不能将字符串数组作为参数传递给webservice.

这是我的代码

String[] items={"hello","world"};
request.addproperty("str",items);
Run Code Online (Sandbox Code Playgroud)

android web-services android-ksoap2

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

在Android上的kSoap2生成的SOAP请求中删除i:type字段

我已经尝试过阅读互联网关于我的问题,但我找不到我需要的正确信息,所以我试着解释我的问题:

我正在使用kSoap2与SOAP上的Web服务"交谈".要生成我的SOAP请求,请使用以下代码:

// Generate SOAP request XML
SoapObject request = new SoapObject(PUB_NAMESPACE,
"testSoapInterface");   

// Add request header
PropertyInfo requestHeader = new PropertyInfo();
requestHeader.setNamespace(PUB_NAMESPACE);
requestHeader.setName("requestheader");

// Generate username property
PropertyInfo usernameProp = new PropertyInfo();
usernameProp.setNamespace(BASE_NAMESPACE);
usernameProp.setName("username");
usernameProp.setValue(username);

// Generate applicationId property
PropertyInfo applicationIdProp = new PropertyInfo();
applicationIdProp.setNamespace(BASE_NAMESPACE);
applicationIdProp.setName("applicationId");
applicationIdProp.setValue("test");

// Add properties to requestHeader (nested)
requestHeader.setValue(new SoapObject(PUB_NAMESPACE, "requestheader")
.addProperty(usernameProp)
.addProperty(applicationIdProp));

request.addProperty(requestHeader);
Run Code Online (Sandbox Code Playgroud)

现在,为了序列化这个,我使用以下内容:

// Serialize SOAP request to the non .NET based SOAP server
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet = false; …
Run Code Online (Sandbox Code Playgroud)

android soap ksoap ksoap2 android-ksoap2

4
推荐指数
2
解决办法
2501
查看次数

ksoap2 xmlPullParserException未终止的实体引用

我有一个用户昨天给我发了电子邮件,说我的应用程序有问题,所以我开始和他一起调试,让他给我发电话的日志,XmlPullParserError当他给服务器打电话时他正在接受我

E/Message Exchange::CallWebService(6426): Exception: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT ???????`I?...@1:18 in java.io.InputStreamReader@406c8808) 05-31 12:33:25.573 
W/System.err(6426): org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT ???????`I?...@1:18 in java.io.InputStreamReader@406c8808) 05-31-12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.error(KXmlParser.java:269)05-31-12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.pushEntity(KXmlParser.java:781)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.pushText(KXmlParser.java:849)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.nextImpl(KXmlParser.java:354)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.next(KXmlParser.java:1378)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1408)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:100)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)05-31 12:33:25.573 
W/System.err(6426):     at ecm2.android.MessageExchange$1.run(MessageExchange.java:96)05-31 12:33:25.573 
W/System.err(6426):     at java.lang.Thread.run(Thread.java:1019)05-31 12:33:27.928 
Run Code Online (Sandbox Code Playgroud)

这是它总是失败的路线

trans.call(SOAP_ACTION, soapEnvelope); …
Run Code Online (Sandbox Code Playgroud)

android android-ksoap2

4
推荐指数
1
解决办法
9984
查看次数

KSoap2 Android接收对象数组

我试图在我的应用程序中使用.NET Web服务,其中服务返回一个对象数组作为响应.

这是来自Web服务的响应格式.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetPickersResponse xmlns="http://tempuri.org/">
  <GetPickersResult>
    <Picker>
      <Id>int</Id>
      <StartTime>dateTime</StartTime>
      <EndTime>dateTime</EndTime>
      <PickerCount>int</PickerCount>
    </Picker>
    <Picker>
      <Id>int</Id>
      <StartTime>dateTime</StartTime>
      <EndTime>dateTime</EndTime>
      <PickerCount>int</PickerCount>
    </Picker>
  </GetPickersResult>
</GetPickersResponse>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

这是我的Java代码,用于从Web服务获取响应.

SoapObject request = new SoapObject(NAMESPACE, METHOD_GET_CONTROL);
SoapSerializationEnvelope envelope = 
        new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);


HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

 try {
             androidHttpTransport.call(SOAP_ACTION_GET_CONTROL, envelope);
            ..........=envelope.getResponse(); //To get the data. }
Run Code Online (Sandbox Code Playgroud)

我的问题是,我在源代码中替换"........"以接收来自服务的响应对象数组?我需要接收多个对象,然后使用他们各自的数据成员.

请帮忙.我是Web服务和Ksoap的新手.

arrays android web-services android-ksoap2

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

Android - org.ksoap2.soapfault无法投射

我正在尝试从Android客户端访问Java Web服务,但它显示错误:

"java.lang.classcastexception org.ksoap2.soapfault无法强制转换为org.ksoap2.serialization.soapobject"

你能帮助我吗?

这是我的客户端Web服务代码:

import java.lang.reflect.Method;

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Context;
import android.content.Intent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View;
import android.view.Window;
import android.widget.EditText;

import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE; 

public class Loginuser extends Activity{


public static final int MENU1 = Menu.FIRST; 
public static final int MENU2 = Menu.FIRST + 1; 
public static final int MENU3 = Menu.FIRST + 2; 
public static Context group;

    private static final String SOAP_ACTION = "";
    private …
Run Code Online (Sandbox Code Playgroud)

java android-ksoap2

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

如何从两个不共享接口的类访问方法?

我正在创建一个将访问Web服务的java库,但是库将在不同的平台中调用,因此我们使用kso​​ap2和ksoap2-android为不同的平台生成帮助程序类.问题是我们有两组生成的类/方法,它们的签名是等价的,但是没有公开共享Java接口 - 所以我无法想办法从我的主代码中调用它们.

一个简化的例子:

//generated for Android
class A {
  public String sayHi() {
    return "Hi A";
  }
}

//generated for j2se
class B {
  public String sayHi() {
    return "Hi B";
  }
}

//main code - don't know how to do this
XXX talker = TalkerFactory.getInstance()
String greeting = talker.sayHi()
Run Code Online (Sandbox Code Playgroud)

当然,最后一部分是伪代码.具体来说,如何在一个对象的实例上调用sayHi(),我不知道编译时的类型,哪个不符合特定的接口?我希望有一些方法可以做到这一点,无需手动编辑所有生成的类来添加"实现iTalker".

java wsdl2java ksoap2 android-ksoap2

4
推荐指数
1
解决办法
115
查看次数

如何从android调用ksoap Web服务?

我有一个小小的困惑,在我们的移动应用程序中,从ios调用的ksoap Web服务如下所示:并正确获取数据.在下面的Web服务中,您可以从以下代码中看到,有一些参数需要传递给Web服务.

 -(void)callwebservice{
    NSString *soapMessage = [NSString stringWithFormat:
                             @"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><Calculate xmlns=\"http://tempuri.org/\"><inputRate>%@</inputRate><rateFrequency xmlns:a=\"http://schemas.datacontract.org/2004/07/FusionPeople.MobileContractor.DomainModel\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><a:RateFrequencyId>0</a:RateFrequencyId><a:RateFrequencyName>%@</a:RateFrequencyName></rateFrequency><nonTaxableExpense>%@</nonTaxableExpense><expenseFrequency xmlns:a=\"http://schemas.datacontract.org/2004/07/FusionPeople.MobileContractor.DomainModel\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><a:RateFrequencyId>0</a:RateFrequencyId><a:RateFrequencyName>%@</a:RateFrequencyName></expenseFrequency></Calculate></s:Body></s:Envelope>\n",txtinputrate.text,lblrate.text,txtexpenses.text,lblexpense.text
                             ];

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@MobileContractorCalculationService.svc",[MobileContractorAppDelegate getstrIpAddress] ]];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
    NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMessage length]];
    [theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest addValue:@"http://tempuri.org/IMobileContractorCalculationService/Calculate" forHTTPHeaderField:@"SOAPAction"];
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    if( theConnection ){
        webData = [NSMutableData data] ;
    }
}
Run Code Online (Sandbox Code Playgroud)

在android方面的另一方面我已经尝试了很多方法来调用这个Web服务并将数据传递给Web服务.但每次我得到服务器端错误代码:415,请有人帮助我并告诉我如何将此分层数据传递给这种类型的ksoap网络服务....

我试过以下代码:

try {

             SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

             request.addProperty("inputRate", …
Run Code Online (Sandbox Code Playgroud)

android android-ksoap2

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

无法解析Ksoap2

Android Studio有问题:

无法解决com.google.code.ksoap2-android:ksoap2-android:3.6.1

这是我的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion '25.0.0'

    defaultConfig {
        applicationId "com.example.papiroomdemo.webservicetest"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        repositories {
            maven { url 'http://ksoap2-android.googlecode.com/svn/m2-repo' }

        }

    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.hannesdorfmann.smoothprogressbar:library:1.0.0'
    compile 'com.github.castorflex.smoothprogressbar:library-circular:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

错误:(30,13)无法解决:com.google.code.ksoap2-android:ksoap2-android:3.6.1
在"项目结构"对话框的" 文件显示"中显示

java android android-ksoap2 android-gradle-plugin

4
推荐指数
1
解决办法
1522
查看次数