ksoap2: Parameterübergabe an ASP.NET Webservice

  • Antworten:7
Funkfeuer
  • Forum-Beiträge: 38

11.06.2012, 08:01:31 via Website

Hallo,

ich greife mit ksoap2 auf den ASP.NET-Webservice von http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit (SOAP 1.1) zu.
Das funktioniert problemlos.

Wenn ich dann aber auf meinen ASP.NET-Webservice zugreife, bekomme ich vom Server eine Fehlermeldung.
Darin wird angegeben, dass der 1. Parameter, den ich übergeben habe, den Wert null enthält.

Ich habe auf der Android-Seite (außer der Webservice-URL, Namespace,..) am Code nix verändert.
Habe halt meine Parameter (Schlüssel/Wert) drangehängt und auch auf SOAP 1.1 zugegriffen.
Auch den Parameter isDotNet habe ich auf True gestellt.

Ich vermute, dass ich am ich am IIS oder am Server selbst noch etwas einstellen muss - vielleicht ist nur GET freigeschalten und POST nicht?
Spielt das eine Rolle?
Habt Ihr eine Idee oder ein ähnliches Problem, das Ihr gelöst habt?

cu
Chris

Antworten
Thor93
  • Forum-Beiträge: 487

11.06.2012, 08:33:02 via Website

Schon mal beim debuggen nach geschaut ob im Parameter auch etwas drin steht?

Jedem das Seine, doch Mir das Meine

Antworten
Funkfeuer
  • Forum-Beiträge: 38

11.06.2012, 10:24:13 via Website

Da steht definitiv was drin. Ich habe in die Property-Methode sowohl den Schlüssel als auch den Wert als String hart reingeschrieben.
Habe auch auf Groß- und Kleinschreibweise geachtet..

Antworten
Thor93
  • Forum-Beiträge: 487

11.06.2012, 13:00:45 via Website

Und deine asp.net anwendung kann mit den parametern auch umgehen ja?

Jedem das Seine, doch Mir das Meine

Antworten
Funkfeuer
  • Forum-Beiträge: 38

11.06.2012, 13:58:29 via Website

Ich habe bisher den Webservice in Android über die GET-Variante aufgerufen - also an die URL die entsprechenden Parameter drangehängt:
http://mein_iis.de/webservice.asmx?param1=abc&param2=def&...

Damit konnte der Webservice umgehen. Ich vermute schon, dass das Problem am Webservice bzw. IIS liegt - vielleicht muß ich in den Webservice noch was eintragen, damit der Zugriff auf die Parameter funktioniert...

Antworten
Funkfeuer
  • Forum-Beiträge: 38

11.06.2012, 21:20:30 via Website

Vielleicht hilft der Code weiter:

1public class MyTestActivity extends Activity {
2
3 private static final String SOAP_ACTION = "http://www.meinserver.de/MeineMethode";
4 private static final String METHOD_NAME = "MeineMethode";
5 private static final String NAMESPACE = "http://www.meinserver.de/";
6 private static final String URL = "http://meinserver/meinProjekt/service.asmx";
7
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.main);
12
13 SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
14 Request.addProperty("p_param1", "11");
15 Request.addProperty("p_param2", "abc");
16 Request.addProperty("p_param3", "");
17 Request.addProperty("p_param4", 40103);
18 Request.addProperty("p_param5", 5);
19 Request.addProperty("p_param6", "");
20 Request.addProperty("p_param7", "");
21 Request.addProperty("p_param8", "");
22 Request.addProperty("p_param9", "");
23
24 SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
25 soapEnvelope.dotNet = true;
26 soapEnvelope.setOutputSoapObject(Request);
27
28 AndroidHttpTransport aht = new AndroidHttpTransport(URL);
29 try {
30 aht.call(SOAP_ACTION, soapEnvelope);
31 SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();
32 System.out.println(">>> " + resultString);
33
34 } catch (Exception e) {
35 e.printStackTrace();
36 }
37 }
38}

Und das ist die genaue Fehlermeldung:

SoapFault - faultcode: 'soap:Server' faultstring:
'Die Anforderung konnte vom Server nicht verarbeitet werden.
---> Die Prozedur oder Funktion 'meine_stored_procedure' erwartet den '@param1'-Parameter, der nicht bereitgestellt wurde.'
faultactor: 'null' detail: org.kxml2.kdom.Node@44ea3430

Und das ist der Webservice. Kann es sein, dass Soap fehlt?
1using System;
2using System.Web;
3using System.Web.Services;
4using System.Web.Services.Protocols;
5using System.Data;
6using System.Data.SqlClient;
7
8[WebService(Namespace = "http://www.meinserver.de")]
9[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
10public class Service : System.Web.Services.WebService
11{
12
13 [WebMethod]
14 public Result MeineMethode(string p_param1, string p_param2, string p_param3, int p_param4, int p_param5, string p_param6, string p_param7, string p_param8, string p_param9)
15 {
16 //....
17 }
18
19}

— geändert am 11.06.2012, 22:09:18

Antworten
Stefan S.
  • Forum-Beiträge: 560

12.06.2012, 08:00:54 via Website

Ich glaube dein Problem ist nicht die Übergabe der Parameter an den WebService.
So wie es aussieht übergibst du Parameter an deine StoredProcedure welche als nicht gültig erarchtet werden.

Antworten
Manuel Wenner
  • Forum-Beiträge: 40

07.03.2013, 01:07:06 via Website

Hast du das Problem mittlerweile gelöst?

Antworten