2013-02-19 2 views
0

Может ли какой-нибудь орган, пожалуйста, направить меня на это. Я абсолютно не знаком с использованием KSOAP в android.Flowing мои подробности в XML.And я хочу отправить данные в webservice.Please расскажите мне, как addProperty я делаю что-то неправильно там ?Отправить Несколько значений в качестве параметра, используя SOAP в android?

<?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> 
    <CheckLoginWithIPhoneData xmlns="http://tempuri.org/"> 
     <UserName>string</UserName> 
     <Pin>string</Pin> 
     <Password>string</Password> 
     <DeviceID>string</DeviceID> 
    </CheckLoginWithIPhoneData> 
    </soap:Body> 
</soap:Envelope> 

И в Java код, который я сделал это:

public void showdetails() 
    { 
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1); 

     request.addProperty("UserName","sometext"); 
     request.addProperty("Pin","sometext"); 
     request.addProperty("Password","sometext"); 
     request.addProperty("DeviceID","sometext"); 

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

     try { 

      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
      androidHttpTransport.debug=true; 
      androidHttpTransport.call(SOAP_ACTION1, envelope); 
      Log.e("RESPONSE",""+androidHttpTransport.responseDump); 

      SoapObject result = (SoapObject) envelope.bodyIn; 
      Log.e("result",""+result); 

      if (result != null) 

      { 
       Log.e("val", "" + result.getProperty(0).toString()); 
      } 

      else 

      { 
       Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show(); 
      } 

     } catch (Exception e) { 

      e.printStackTrace(); 

     } 

    } 

я назвал метод в фоновом режиме.

Тем не менее, я получаю следующее сообщение об ошибке при попытке распечатать RESPONSE Log.e ("RESPONSE", "" + androidHttpTransport.responseDump);

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring> System.Web.Services.Protocols.SoapException: Сервер не распознает значение HTTP заголовка SOAPAction: https://tempuri.org/CheckLoginWithIPhoneData.

ответ

1
 request = new SoapObject(Util.getInstance().NAMESPACE, method); 

    AuthenticateRequest authenticateRequest = (AuthenticateRequest) params[0]; 

    SoapObject authenticate = new SoapObject(Util.getInstance().NAMESPACE, "CheckLoginWithIPhoneData"); 

    authenticate.addProperty("UserName", <value>); 
    authenticate.addProperty("Pin", <value>); 
    authenticate.addProperty("Password", <value>); 
    authenticate.addProperty("DeviceID", <value>); 

    PropertyInfo propertyInfo1 = new PropertyInfo(); 
    propertyInfo1.namespace = Util.getInstance().NAMESPACE; 
    propertyInfo1.name = "CheckLoginWithIPhoneData"; 

    request.addProperty(propertyInfo1, authenticate); 

Надеюсь, что эта помощь!

0

Убедитесь, что у вас есть переменные, связанные с запросом SOAP, как показано ниже:

Вообще SOAP_ACTION должно быть сочетание NAMESPACE и METHOD_NAME

SOAP_ACTION = NAMESPACE + METHOD_NAME

Примеры значений вышепеременных:

private static final String SOAP_ACTION = "http://uri.org/GetFormData"; 
private static final String METHOD_NAME = "GetFormData"; 
private static final String NAMESPACE = "http://uri.org/"; 
private static final String URL = "http://inukshk.com/getformsdata/sample.asmx"; 

Надеюсь, это вам поможет.

0

Тип напечатанной строки может быть неправильным, например, для тега «Pin», если он принимает только целое число, и если вы пишете char, это дает вам ошибку.

Смежные вопросы