SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.07.2009, 10:22:41
rencarl rencarl ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 49
Beiträge: 9
Webservice mit NuSOAP: Request Probleme

Hi,

seit einigen Tagen versuche ich einen bestimmten Request zu erstellen, aber irgendwo hakt es und ich komme einfach nicht weiter. Erschwerend kommt hinzu, dass ich noch keinerlei Erfahrung mit Webservices habe. Einen ersten einfachen eigenen Test-Webservice habe ich aber bereits einrichten können. Jetzt aber zum eigentlichen Webservice.

Die Anfrage (Request) muss wie folgt aussehen:
Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v001="http://www.deltavista.com/dspone/ordercheck-if/V001">
<soapenv:Header>
<v001:messageContext>
<v001:credentials>
<v001:user>xxx</v001:user>
<v001:password>xxx</v001:password>
</v001:credentials>
</v001:messageContext>
</soapenv:Header>
<soapenv:Body>
<v001:orderCheckRequest>
<v001:product>
<v001:name>CreditCheckBusiness</v001:name>
<v001:country>DEU</v001:country>
</v001:product>
<v001:searchedCandidate>
<v001:legalForm>COMPANY</v001:legalForm>
<v001:address>
<v001:name>Deltavista</v001:name>
<v001:location>
<v001:street>Kaiserstrasse</v001:street>
<v001:house>217</v001:house>
<v001:city>Karlsruhe</v001:city>
<v001:zip>76133</v001:zip>
</v001:location>
</v001:address>
</v001:searchedCandidate>
</v001:orderCheckRequest>
</soapenv:Body>
</soapenv:Envelope>
Bisher habe ich folgende Anfrage hinbekommen:
Code:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns2449:hello xmlns:ns2449="http://tempuri.org">
<product>
<name xsi:type="xsd:string">QuickCheckBusiness</name>
<country xsi:type="xsd:string">DEU</country>
</product>
<searchedCandidate>
<name xsi:type="xsd:string">Deltavista</name>
<location>
<street xsi:type="xsd:string">Kaiserstrasse</street>
<house xsi:type="xsd:string">217</house>
<city xsi:type="xsd:string">Karlsruhe</city>
<zip xsi:type="xsd:string">76133</zip>
</location>
</searchedCandidate>
</ns2449:hello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Wie bekomme ich jetzt z. B. den Header in die Anfrage hinein? Oder wie bekomme ich den korrekten Namespace (v001) hinzu?
------------------------------------------------------------------------------------------------------
Ausprobiert habe ich bisher folgendes:

PHP-Code:
// Pull in the NuSOAP code
require_once('nusoap-0.7.3/lib/nusoap.php');

// Create the client instance
$client = new nusoap_client('https://test-dspone.deltavista.com/dspone/services/OrderCheckService?wsdl',true);
$err $client->getError();
if(
$err){
   echo 
'<h2>Constructor error</h2><pre>'.$err.'</pre>';
}

$parameter = array(
 
'product' => array(
   
'name' => 'QuickCheckBusiness',
   
'country' => 'DEU'),
 
'searchedCandidate' => array(
   
'name' => 'Deltavista',
   
'location' => array(
      
'street' => 'Kaiserstrasse',
      
'house' => '217',
      
'city' => 'Karlsruhe',
      
'zip' => '76133')
   )
);

$proxy $client->getProxy();
$result $proxy->orderCheck($parameter);

if(
$client->fault) {
   
print_r($result);
} else {
   
$err $client->getError();
   if (
$err) {
      echo 
'<h2>Error</h2><pre>'.$err.'</pre>';
   } else {
      echo 
'<h2>Result</h2><pre>';
      
print_r($result);
      echo 
'</pre>';
   }

Entweder mach ich was falsch, oder die Test-Seite von deltavista funktioniert nicht. Auf jeden Fall erhalte ich ein leeres Resultat. $client->request und $client->response sind auch leer. Wenn ich meinen Test-Webservice 'http://localhost/webservices/server.php' verwende, kann ich mir wenigstens mit $client->request und $client->response XML-Code ausgeben lassen.

Desweiteren habe ich die Anfrage auch ohne Proxy ausgetestet:
PHP-Code:
$result $client->call('orderCheck'$parameter); 
Dies liefert mir aber eine Fehlermeldung, die ich nicht interpretieren kann:
Code:
wsdl error: http://www.deltavista.com/dspone/ordercheck-if/V001:orderCheckRequest^ (orderCheckRequest^) is not a supported type.
Ich vermute, dass die Parameterübergabe falsch ist, aber wie ist sie dann richtig? Wenn ich als $parameter einen einfachen String übergebe, erhalte ich folgende Fehlermeldung:
Code:
HTTP Error: Couldn't open socket connection to server http://10.50.1.21:8085/dspone/services/OrderCheckService, Error (110): Connection timed out
Mit Zitat antworten
  #2  
Alt 22.07.2009, 14:21:21
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Webservice mit NuSOAP: Request Probleme

Hi,

also am einfachsten ist das mit PHP5. Hier kannst du direkt und bequem den Header et. setzen.

http://de.php.net/soap

Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #3  
Alt 23.07.2009, 11:44:41
rencarl rencarl ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 49
Beiträge: 9
Webservice mit NuSOAP: Request Probleme

Hi, unser Provider hat dummerweise noch PHP 4.4.9. Aber das gute ist folgendes: unser Kunde wollte bei seinem eigenen Provider bleiben, und der hat PHP 5. Soso, PHP 5, habe ich keinerlei Erfahrung mit, aber egal, wir kommen der Lösung näher.

Ich habe jetzt folgenden Code:
PHP-Code:
// Create the client instance
$client = new SoapClient('https://test-dspone.deltavista.com/dspone/services/OrderCheckService?wsdl',array('trace'=>1));
var_dump($client->__getFunctions());
echo 
'<hr>';

$parameter = array(
 
'product' => array(
   
'name' => 'QuickCheckBusiness',
   
'country' => 'DEU'),
 
'searchedCandidate' => array(
   
'name' => 'Deltavista',
   
'location' => array(
      
'street' => 'Kaiserstrasse',
      
'house' => '217',
      
'city' => 'Karlsruhe',
      
'zip' => '76133')
   )
);

$result $client->__soapCall("orderCheck",$parameter);

if(
is_soap_fault($result)) {
    echo 
"FehlerCode: "$result->faultcode"\n";
    echo 
"Beschreibung: "$result->faultstring"\n";
    echo 
"Sender: "$result->faultactor"\n";
} else {
    
print_r($result);
}
echo 
"<hr>ANFRAGE:\n" $client->__getLastRequest() . "\n";
echo 
"<hr>ANTWORT:\n" $client->__getLastResponse() . "\n"
__getFunctions liefert mir folgende Ausgabe:
Code:
array(1) { [0]=>  string(59) "OrderCheckResponse orderCheck(OrderCheckRequest $parameter)" }
Kann mir bitte jemand die Ausgabe erklären?

Außerdem erhalte ich folgende Fehlermeldung, vermutlich liegt es an der nicht korrekten Parameterübergabe:
Code:
Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'product' property in...
Mit Zitat antworten
  #4  
Alt 23.07.2009, 12:26:39
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Webservice mit NuSOAP: Request Probleme

Zitat:
Hi, unser Provider hat dummerweise noch PHP 4.4.9.
Das riecht stark nach 1und1 !
Und da kannst du das bequem umstellen.
Mit Zitat antworten
  #5  
Alt 23.07.2009, 15:07:03
rencarl rencarl ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 49
Beiträge: 9
AW: Webservice mit NuSOAP: Request Probleme

Stimmt, einen guten Riecher hast du ;-)

Mit der Endung php5 funktioniert auch PHP 5 auf unserem Server, gut zu wissen.
Mit Zitat antworten
  #6  
Alt 27.07.2009, 11:56:08
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: Webservice mit NuSOAP: Request Probleme

Zitat:
Zitat von rencarl Beitrag anzeigen
Stimmt, einen guten Riecher hast du ;-)

Mit der Endung php5 funktioniert auch PHP 5 auf unserem Server, gut zu wissen.
und noch einfacher geht es mit einer .htaccess Datei, da du hier die Endung nicht auf PHP5 stellen musst.
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #7  
Alt 04.08.2009, 11:10:00
rencarl rencarl ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 49
Beiträge: 9
AW: Webservice mit PHP 5: Request Probleme

Zurück zum eigentlichen Thema:

Ich habe mittlerweile Login-Daten bekommen und eine Beispielanfrage, allerdings in Java
Code:
package com.deltavista.app.portal.soap.ordercheck.test;

import java.rmi.RemoteException;

import com.deltavista.app.portal.soap.ordercheck.ErrorMessage;
import com.deltavista.app.portal.soap.ordercheck.OrderCheckServiceStub;
import com.deltavista.app.portal.soap.ordercheck.stub.Address;
import com.deltavista.app.portal.soap.ordercheck.stub.Country;
import com.deltavista.app.portal.soap.ordercheck.stub.Credentials;
import com.deltavista.app.portal.soap.ordercheck.stub.LegalForm;
import com.deltavista.app.portal.soap.ordercheck.stub.Location;
import com.deltavista.app.portal.soap.ordercheck.stub.MessageContext;
import com.deltavista.app.portal.soap.ordercheck.stub.MessageContextE;
import com.deltavista.app.portal.soap.ordercheck.stub.OrderCheckRequest;
import com.deltavista.app.portal.soap.ordercheck.stub.OrderCheckRequestE;
import com.deltavista.app.portal.soap.ordercheck.stub.OrderCheckResponseE;
import com.deltavista.app.portal.soap.ordercheck.stub.Product;
import com.deltavista.app.portal.soap.ordercheck.stub.SearchCandidate;

/**
 * Send test request
 *
 * German Team, (c) Deltavista 2000-2009
 */

public class ExampleRequest {

	protected final static String host = "..."; 	  //TODO set proper host here
	protected final static String user="..."; 		//TODO set proper user login here 
	protected final static String password="..."; 	//TODO set proper user password here
	
	protected void testB2BRequest() throws RemoteException, ErrorMessage {
		
		Credentials credentials = new Credentials();
		credentials.setUser(user);
		credentials.setPassword(password);
		
		
		MessageContextE context = new MessageContextE();
		MessageContext ctx = new MessageContext();
		ctx.setCredentials(credentials);
		ctx.setCorrelationID("1234567890");
		context.setMessageContext(ctx);
		
		
		OrderCheckRequestE reqe  = new OrderCheckRequestE();
		Country country = new Country();
		country.setCountry("DEU");
		
		OrderCheckRequest req = new OrderCheckRequest();
		Product product = new Product();
		product.setName("CreditCheckBusiness");
		product.setCountry(country);
		req.setProduct(product);
		
		SearchCandidate candidate = new SearchCandidate();
		candidate.setLegalForm(LegalForm.COMPANY);
		
		
		Address address = new Address();
		address.setName("Deltavista");
		Location[] locationArray = new Location[1];
		Location location = new Location();
		location.setType("CURRENT");
		location.setCity("Karlsruhe");
		location.setStreet("Keiserstr.");
		location.setHouse("217");
		location.setZip("76133");
		Country candidateCountry = new Country();
		candidateCountry.setCountry("DEU");
		location.setCountry(candidateCountry);
		locationArray[0] = location;
		address.setLocation(locationArray);
		
		candidate.setAddress(address);
		
		
		req.setSearchedCandidate(candidate);
		reqe.setOrderCheckRequest(req);
		
		
		OrderCheckServiceStub stub = new OrderCheckServiceStub(host);
		stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(200000);
		OrderCheckResponseE response;
		
		response = null;
		try {
			response = stub.orderCheck(reqe, context);
		} catch (RemoteException e) {
			System.out.println("RemoteException: " + e + "\n" + e.getMessage());
			throw e;
		} catch (ErrorMessage e) {
			System.out.println("ErrorMessage exception: " + e + "\n" + e.getMessage());
			if (e.getFaultMessage() != null && e.getFaultMessage().getError() != null) {
				System.out.println("Error code= " + e.getFaultMessage().getError().getCode() + ": " + e.getFaultMessage().getError().getMessageText());
			}
			throw e;
		}
	}

	protected void testB2CRequest() throws RemoteException, ErrorMessage {
		
		Credentials credentials = new Credentials();
		credentials.setUser(user);
		credentials.setPassword(password);
		
		MessageContextE context = new MessageContextE();
		MessageContext ctx = new MessageContext();
		ctx.setCredentials(credentials);
		ctx.setCorrelationID("1234567890");
		context.setMessageContext(ctx);
		
		
		OrderCheckRequestE reqe  = new OrderCheckRequestE();
		Country country = new Country();
		country.setCountry("DEU");
		
		OrderCheckRequest req = new OrderCheckRequest();
		Product product = new Product();
		product.setName("CreditCheckConsumer");
		product.setCountry(country);
		req.setProduct(product);
		
		SearchCandidate candidate = new SearchCandidate();
		candidate.setLegalForm(LegalForm.PERSON);
		
		Address address = new Address();
		address.setName("Max Mustermann");
		Location[] locationArray = new Location[1];
		Location location = new Location();
		location.setType("CURRENT");
		location.setCity("Musterstadt");
		location.setStreet("Musterstraße");
		location.setHouse("1");
		location.setZip("12345");
		Country candidateCountry = new Country();
		candidateCountry.setCountry("DEU");
		location.setCountry(candidateCountry);
		locationArray[0] = location;
		address.setLocation(locationArray);
		
		candidate.setAddress(address);
		
		
		req.setSearchedCandidate(candidate);
		reqe.setOrderCheckRequest(req);
		
		
		OrderCheckServiceStub stub = new OrderCheckServiceStub(host);
		stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(200000);
		OrderCheckResponseE response;
		
		response = null;
		try {
			response = stub.orderCheck(reqe, context);
		} catch (RemoteException e) {
			System.out.println("RemoteException: " + e + "\n" + e.getMessage());
			throw e;
		} catch (ErrorMessage e) {
			System.out.println("ErrorMessage exception: " + e + "\n" + e.getMessage());
			if (e.getFaultMessage() != null && e.getFaultMessage().getError() != null) {
				System.out.println("Error code= " + e.getFaultMessage().getError().getCode() + ": " + e.getFaultMessage().getError().getMessageText());
			}
			throw e;
		}
	}

}
Mit Java kann ich nun überhaupt nix anfangen. Der Webservice wird doch aber mittels XML bewerkstelligt. Also müsste es doch möglich sein aus dem Java-Code den nötigen PHP-Code zu interpretieren. Das habe ich auch versucht:
PHP-Code:
$client = new SOAPClient('https://online-de.deltavista.com/dspone/services/OrderCheckService?wsdl', array("user" => "MEINUSERNAME""password" => "MEINPASSWORT"));

// Gibt eine Liste verfügbarer SOAP-Funktionen zurück
print_r($client->__getFunctions());
echo 
'<hr>';

// Gibt eine Liste der SOAP-Typen zurück
print_r($client->__getTypes());
echo 
'<hr>';

$parameter = array(
 
'product' => 'QuickCheckBusiness',
 
'company' => array(
   
'name' => 'Bau Clever GmbH',
   
'location' => array(
      
'street' => 'Rathaustraße',
      
'house' => '2',
      
'city' => 'Glücksburg',
      
'zip' => '24960')
   )
);

$result $client->__soapCall("orderCheck"$parameter);

if(
is_soap_fault($result)) {
    echo 
"FehlerCode: "$result->faultcode"\n";
    echo 
"Beschreibung: "$result->faultstring"\n";
    echo 
"Sender: "$result->faultactor"\n";
} else {
    
print_r($result);
}
echo 
"<hr>ANFRAGE:\n" .$client->__getLastRequest(). "\n";
echo 
"<hr>ANTWORT:\n" .$client->__getLastResponse(). "\n"
Als Ergebnis bekomme ich 'Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in ....'

Sorry, wenn ich alles mit Code zumülle, aber ich weiß echt nicht weiter.

Meine Testseite mit kompletter Ausgabe: http://www.teekontor-ostfriesland.de/client.php
Mit Zitat antworten
  #8  
Alt 07.09.2009, 19:23:41
rencarl rencarl ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 49
Beiträge: 9
AW: Webservice mit NuSOAP: Request Probleme

Hi,
Fehler gefunden. Es lag an der falschen URL.

Mit dem Tool soapUI kann man einfache Requests generieren. Und unter request properties musste ich nur den "Endpoint" ändern. Das hätten die mir aber auch früher sagen können ;-)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Scriptvorlage he2114 PHP Grundlagen 8 10.12.2008 11:40:51
Wie kann ich mit nusoap eine Session starten und nutzen? dlange PHP für Fortgeschrittene und Experten 0 17.02.2008 01:08:15
eaccelerator Release-0.9.5.2 in Win XAMPP 1.6.4 mormor Apache HTTP-Server 8 14.12.2007 10:59:53
Http Request Nano PHP Grundlagen 1 02.04.2007 11:33:43
PHP mail() funktion und server probleme flobee PHP für Fortgeschrittene und Experten 0 03.07.2002 01:18:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:50:00 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt