Webservice soll InputStream übergeben bekommen

LILA

Aktives Mitglied
Hallo Forum,

ich habe ein Problem:

In meinem Webservice auf der Server-Seite habe ich folgende Methode:
Java:
package ...webservices;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
...

@WebService()
public class ImportData {

	@WebMethod(operationName = "importIdfDataToOnmon")
	public void importIdfDataToOnmon(@WebParam(name = "idfFileAsStream") InputStream inputStream) {
...
	}
}

Nun dachte ich ich könnte das auf der Clientseite so aufrufen:
Java:
InputStream uploadedStream = item.getInputStream();
			
ImportDataService service = new ImportDataService();
ImportData port = service.getImportDataPort();
port.importIdfDataToOnmon(uploadedStream);

Das funktioniert aber nicht ich bekomme folgende Fehlermeldung:
The method importIdfDataToOnmon(InputStream) in the type ImportData is not applicable for the arguments (InputStream)

Was muss ich denn da anders machen? Hat jemand eine Idee?

Vielen Dank im Vorraus

LILA
 
Das dachte ich anfangs auch, aber im Server importiere ich:
import java.io.InputStream;

Und der Client nutzt den selben InputStream.

Allerdings ist in den erzeugten ClientStubs ein InputStream enthalten das sieht wie folgt aus:
Java:
package ....importservice.generated;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>Java class for inputStream complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="inputStream">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "inputStream")
public abstract class InputStream {


}

Daran muss es liegen???????

Vielen Dank für die Antwort!
 
Also hab ich das nun richtig verstanden, du willst einen InputStream vom einen zum anderen Rechner schicken? Und das ganze mit Webservices? Was soll denn der Server mit dem Client-IS anfangen? Kann mir kaum vorstellen, dass das funktioniert...
 
Hab noch nicht viel mit WS gemacht, aber das liegt afaik an deiner Definition des WS.

Du musst ihn als RPC definieren, damit du argumente übergeben kannst:
Java:
@WebService()
@SOAPBinding(style= SOAPBinding.Style.RPC)
public class ...

Versuch das mal.
 
Vielen Dank, das Soap-Binding hilft mir erstmal so nicht.

Prinzipiell könnte ich auch ein File oder sonstiges per Webservice übertragen.
Es muss nicht umbedingt ein Stream sein.

Das das klappt, weiß ich, ich habe schonmal einen Client gebaut, der das tat.
Allerdings kenne ich die Sourcen von den Service in diesem Fall nicht, sodass ich nicht spicken kann.
 
Das müsste sich mit SOAP mit Attachments lösen lassen.
Kennt sich da jemand aus?
Oder kann mir ein gutes Tutorial nennen?
 

Neue Themen


Zurück
Oben