# Erste Schritte: soap client



## fishbone (20. Mrz 2007)

Hallo !

Schon laenger her seit ich Java angeguckt habe und nun bin ich etwas verwirrt hinsichtlich der zu verwendenden Packages und der Syntax.

Also ich wuerde gern mein Guthaben bei meinem ISP auslesen. Hier findet sich ein Beispiel unter perl, das nah dran ist:
http://www.pbx-network.de/phpBB2/viewtopic.php?t=248&sid=ab7e5d24fabc0af118ede3ead13cd499
Die Beschreibung des/der Service(s) ist hier http://www.pbx-network.de/phpBB2/viewtopic.php?t=255&sid=ab7e5d24fabc0af118ede3ead13cd499

Dachte mir axis mit gcj sollte unter Debian laufen... Jedoch sind die Services beim ISP verstreut, so dass ich nicht denke, dass der Automatismus hier http://wiki.apache.org/ws/FrontPage/Axis/WritingYourClient weiterhilft. Ich denke das Programm ist nicht laenger als 10 Zeilen, aber wo anfangen ...?


----------



## AlArenal (20. Mrz 2007)

Und wir sollen jetzt deine Arbeit machen, oder wie?

Schnapp dir ein Java SOAP-Tutorial und ran an den Speck!


----------



## Guest (20. Mrz 2007)

AlArenal hat gesagt.:
			
		

> Und wir sollen jetzt deine Arbeit machen, oder wie?
> 
> Schnapp dir ein Java SOAP-Tutorial und ran an den Speck!



Wenn Du ein gutes weisst, warum postest Du dann nicht den Link ?


----------



## AlArenal (21. Mrz 2007)

"Gut" liegt im Auge des Betrachters. Ich schätze dein Googel ist so gut wie der eines jeden anderen auch.


----------



## fishbone (21. Mrz 2007)

... keines der Tutorials kann mir sagen, warum folgender Code nicht funktioniert:


```
import org.apache.xmlrpc.client.*;
import java.net.*;

public class pbx {

	
	
	public static void main(String[] args) {
		String urls[] = { "https://secure.pbx-network.de/pbx-server/public/services/LoginService?wsdl",
		"https://secure.pbx-network.de/pbx-server/customer/services/BillingService?wsdl" };
		String username = "myusername";
		String password = "mypassword";

		XmlRpcClientConfigImpl config0 = new XmlRpcClientConfigImpl();
		try {
			config0.setServerURL(new URL(urls[0]));
			XmlRpcClient client0 = new XmlRpcClient();
			client0.setConfig(config0);
			Object[] params0 = new Object[]{ username, password };
			Object ticket = client0.execute("login", params0);
			System.out.println(ticket);
			XmlRpcClientConfigImpl config1 = new XmlRpcClientConfigImpl();
			try {
				config1.setServerURL(new URL(urls[1]));
				XmlRpcClient client1 = new XmlRpcClient();
				client1.setConfig(config1);
				Object[] params1 = new Object[]{ ticket };
				Object result  = client1.execute("getCredit", params1);
				System.out.println(result);
				
			} catch ( Exception e ) {
				e.printStackTrace();
			}		
		} catch ( Exception e ) {
			e.printStackTrace();
		}
	}

}
```

denn es gibt:


```
org.apache.xmlrpc.XmlRpcException: Failed to create input stream: Server returned HTTP response code: 500 for URL: [url]https://secure.pbx-network.de/pbx-server/public/services/LoginService?wsdl[/url]
	at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.getInputStream(XmlRpcSunHttpTransport.java:60)
	at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:141)
	at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:94)
	at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:39)
	at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
	at pbx.main(pbx.java:21)
Caused by:
java.io.IOException: Server returned HTTP response code: 500 for URL: [url]https://secure.pbx-network.de/pbx-server/public/services/LoginService?wsdl[/url]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
	at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.getInputStream(XmlRpcSunHttpTransport.java:58)
	at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:141)
	at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:94)
	at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:39)
	at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
	at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
	at pbx.main(pbx.java:21)
```

das Zeugs gibt's hier: http://www.apache.org/dyn/closer.cgi/ws/xmlrpc/
und die Anleitung ist hier: http://ws.apache.org/xmlrpc/client.html


----------



## AlArenal (21. Mrz 2007)

Steht doch da: Weil der Server nen 500er zurückgeschickt hat (Internal Server Error). http://de.selfhtml.org/servercgi/server/httpstatuscodes.htm

Ist jetzt auch nicht sooo verwunderlich, weil du die falsche Lib verwendest. XML-RPC ist nicht gleich SOAP. Nimm Apache Axis (die nimmt PBX übrigens laut Output auch).


----------



## fishbone (21. Mrz 2007)

Naja, das mit xml-rpc kam als Hinweis vom Support... 

leider haenge ich jetzt bei der Parameteruebergabe fest - wie uebergebe ich username und password ...?


```
import org.apache.axis.client.*;
import javax.xml.namespace.QName;
import java.net.*;

public class pbx {
	
	public static void main(String[] args) {
		String urls[] = { "https://secure.pbx-network.de/pbx-server/public/services/LoginService?wsdl",
		"https://secure.pbx-network.de/pbx-server/customer/services/BillingService?wsdl" };
		String username = "myusername";
		String password = "mypassword";

        try {
        	Service  service = new Service();
        	Call     call    = (Call) service.createCall();
        	
        	call.setTargetEndpointAddress( new URL(urls[0]) );
        	call.setOperationName( "login" );
            call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
            call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
  
        	System.out.println("Sent");
        } catch (Exception e) {
        	System.err.println(e.toString());
        }

	}

}
```


----------



## Gast (2. Apr 2007)

Versuchs mal mit WSDL2Java:

http://www.torsten-horn.de/techdocs/java-soap-axis.htm


----------

