tengo que pasar

<?xml version='1.0' encoding='utf-8' ?>
<hello><username>[email protected]</username>
<password>test</password></hello>

a

Wsdl

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="SilentManagerAPI" targetNamespace="http://tempuri.org/">
<wsp:Policy wsu:Id="WSHttpBinding_ISilentManagerAPI_policy">
<wsp:ExactlyOne>
<wsp:All>
<wsaw:UsingAddressing/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://myurl.com/Service.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://myurl.com/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ISilentManagerAPI_Service_InputMessage">
<wsdl:part name="parameters" element="tns:Service"/>
</wsdl:message>
<wsdl:message name="ISilentManagerAPI_Service_OutputMessage">
<wsdl:part name="parameters" element="tns:ServiceResponse"/>
</wsdl:message>
<wsdl:portType name="ISilentManagerAPI">
<wsdl:operation name="Service">
<wsdl:input wsaw:Action="http://tempuri.org/ISilentManagerAPI/Service" message="tns:ISilentManagerAPI_Service_InputMessage"/>
<wsdl:output wsaw:Action="http://tempuri.org/ISilentManagerAPI/ServiceResponse" message="tns:ISilentManagerAPI_Service_OutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WSHttpBinding_ISilentManagerAPI" type="tns:ISilentManagerAPI">
<wsp:PolicyReference URI="#WSHttpBinding_ISilentManagerAPI_policy"/>
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Service">
<soap12:operation soapAction="http://tempuri.org/ISilentManagerAPI/Service" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SilentManagerAPI">
<wsdl:port name="WSHttpBinding_ISilentManagerAPI" binding="tns:WSHttpBinding_ISilentManagerAPI">
<soap12:address location="http://myurl.com/Service.svc/Service.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>
http://myurl.com/Service.svc/Service.svc
</wsa10:Address>
</wsa10:EndpointReference>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Código Intentado :

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import java.io.Writer;
import org.ksoap2.*;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.*;
import org.xmlpull.v1.XmlSerializer;
public class MainActivity extends Activity {
private static final String METHOD_NAME = "Service"; 
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://myurl.com/Service.svc";
final String SOAP_ACTION = "http://tempuri.org/ISilentManagerAPI/Service";
TextView tv;
StringBuilder sb;
private XmlSerializer writer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
sb = new StringBuilder();
new testReq().execute();
tv.setText(sb.toString());
setContentView(tv);
}
class testReq extends AsyncTask<Void, Void, Void> {
Dialog dialog;
@Override
protected void onPreExecute() {
//TODO Auto-generated method stub
super.onPreExecute();
dialog = ProgressDialog.show(MainActivity.this, "Please Wait...",
"Testing........");
dialog.setCancelable(true);
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//TODO Auto-generated method stub
cancel(true);
}
});
}
@Override
protected void onPostExecute(Void result) {
//TODO Auto-generated method stub
super.onPostExecute(result);
dialog.dismiss();
}
@Override
protected Void doInBackground(Void... params) {
//TODO Auto-generated method stub
call();
return null;
}
}
public void call() {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo req = new PropertyInfo();
req.name = "hello";
req.type = String.class;
req.setValue("<hello>" + "<username>[email protected]</username>"
+ "<password>test123</password>" + "</hello>");
request.addProperty(req);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String resultData = result.toString();
Log.i("Result", "" + resultData);
sb.append(resultData + "\n");
} catch (Exception e) {
sb.append("Error:\n" + e.getMessage() + "\n");
e.printStackTrace();
}
}
}

estoy usando internet permiso en AndroidManifest.xml

  <uses-permission android:name="android.permission.INTERNET"/>

y la salida será como

<hello>
<username>any</username>
<myoutputdata>
.
. return data
.    
</myoutputdata>
</silent>

Después de probar este código llegar exception

LogCat

08-01 13:27:53.240: W/System.err(10915): java.io.IOException: HTTP request failed, HTTP status: 404
08-01 13:27:53.300: W/System.err(10915):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)
08-01 13:27:54.370: W/System.err(10915):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:116)
08-01 13:27:54.390: W/System.err(10915):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:111)
08-01 13:27:54.410: W/System.err(10915):    at com.example.testeset.MainActivity.call(MainActivity.java:105)
08-01 13:27:54.440: W/System.err(10915):    at com.example.testeset.MainActivity$testReq.doInBackground(MainActivity.java:80)
08-01 13:27:54.460: W/System.err(10915):    at com.example.testeset.MainActivity$testReq.doInBackground(MainActivity.java:1)
08-01 13:27:54.470: W/System.err(10915):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-01 13:27:54.480: W/System.err(10915):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-01 13:27:54.490: W/System.err(10915):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-01 13:27:54.500: W/System.err(10915):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
08-01 13:27:54.500: W/System.err(10915):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-01 13:27:54.500: W/System.err(10915):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-01 13:27:54.500: W/System.err(10915):    at java.lang.Thread.run(Thread.java:856)

Aquí estoy consiguiendo Excepción:

androidHttpTransport.call(SOAP_ACTION, envelope);
  • creo que esta es la url api.silentmanager.com/Service.svc/Service.svc y la no apertura del navegador
  • sí que está la url. stackoverflow.com/questions/11160355/…. comprobar esto tiene algo que ver con la unión. no estoy seguro. ¿por qué fue esta votada abajo?
  • stackoverflow.com/help/bounty
  • uso BasicHttpBinding en su servicio en lugar de utilizar WSHttpBinding. debido a que este es avanzar. todavía yo no conecte esta unión con android. he tratado mucho de método. pero no puedo.
  • gracias por el comentario ! yo voy a probar eso !
  • estoy absolutamente seguro de que usted va a obtener una salida mediante el uso de BasicHttpBinding
  • android-espíritu.blogspot.en/2013/07/… mira esto.
  • en el enlace que he intentado código no está pasando nada en el botón de clic !
  • su trabajo para mí de todos modos prueba este enlace stackoverflow.com/a/14563386/1835764
  • tienes la salida!! si no, compruebe la conexión a internet en el emulador.
  • estoy probando en el Dispositivo Físico, y mi conexión a internet está funcionando bien !
  • has encontrado la solución o aún mismo problema?
  • permítanos continuar esta discusión en el chat
  • Hola @PoojaKansal, tengo un mismo problema, pero aceptó la respuesta no me ha ayudado, cómo resolviste tu problema?

InformationsquelleAutor Tarsem Singh | 2013-08-01

2 Comentarios

  1. 2

    Si todavía relevante..

    Primero de todos, usted debe cambiar URL a http://myurl.com/Service.svc/Service.svc. Se va a resolver de error 404.

    Más debe cambiar

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    a

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);

    Además se debe añadir wsa:To y wsa:Action encabezados como este:

            Element e = new Element();
    e.setName("To");
    e.setNamespace("http://www.w3.org/2005/08/addressing");
    e.addChild(Node.TEXT,"http://myurl.com/Service.svc/Service.svc");
    Element e1 = new Element();
    e1.setName("Action");
    e1.setNamespace("http://www.w3.org/2005/08/addressing");
    e1.addChild(Node.TEXT,"http://tempuri.org/ISilentManagerAPI/Service");
    envelope.headerOut = new Element[]{e,e1};

    Espero que sea de ayuda.

    Edit: Intente cambiar req a:

     PropertyInfo req = new PropertyInfo();
    req.name = "xmlstring";
    req.namespace=NAMESPACE;
    req.type = String.class;
    req.setValue("<hello><username>[email protected]</username><password>test</password></hello>");
    request.addProperty(req);

    es decir cambiar req.name a xmlstring y set de espacio de nombres.

    • gracias por su ayuda! Realmente su gran ayuda :), pero aún así algo está mal me va a corregir eso !
    • He editado la respuesta, este debe ser completamente correcto =)
    • eso es todo 🙂 muchas gracias !
    • me alegro de ayuda=) gracias=)
    • ¿cuál es el propósito de http://myurl.com/Service.svc/Service.svc doble Servicio.svc
  2. 1

    De intentar el siguiente

    PropertyInfo req = new PropertyInfo();
    req.name="silent";
    req.type=String.class;
    req.setValue("<silent>"
    +"<action>"+logon+"</action>"
    +"<gameid>"+mygameid+"</gameid>"
    +"<gpassword>"+mypwd+"</gpassword>"
    +"<data>"
    +"<username>"+[email protected].com+"</username>"
    +"<password>"+test+"</password>"
    +"</data>"
    +"</silent>");
    request.addProperty(req);   
    • intenté ! no hubo suerte encontrado ! vista del texto de los silencios de la muestra Eroor : null
    • a mí me funciona. sólo asegúrese de pasar los valores de la derecha
    • usted obtener ninguna respuesta de estado mensajes de éxito o fracaso. Esto es lo que hice en una de mis aplicaciones y trabajó para mí. que es como solía pasar el xml.
    • no hay tal estado ! puede usted por favor trate de mi código que me han proporcionado los valores de la derecha !
    • estás seguro de que es la url correcta?
    • sí, usted puede golpear en el navegador api.silentmanager.com/Service.svc?wsdl
    • también he actualizado a la pregunta de por probado el código que puede volver a comprobar! ahora conseguir nada excepto la pantalla en blanco !
    • la solicitud de xml como por su pregunta que es lo correcto. pero hay algo mal con jabón de serialización. me da excepciones
    • ahora también estoy recibiendo Excepción ! logcat enviado a mi pregunta !
    • permítanos continuar esta discusión en el chat
    • yo lo he solucionado unknownhost Exception recibiendo ahora java.io.IOException: HTTP request failed, HTTP status: 404 ver a mis actualizado logcat !

Dejar respuesta

Please enter your comment!
Please enter your name here