Zum Inhalt springen

Google Search Webservice mit Apache Axis realisieren?


Empfohlene Beiträge

Geschrieben

Hallo Leutz,

ich bin gerade dabei mich in Axis und Webservices einzuarbeiten.

Dazu schreibe ich ein Webservice, der die convertCurrency Funktion von google benutzt um Währungen umzurechnen.

Falls jemand diesen Google Service nicht kennt:

Wenn man in dem Google Suche "5 Dollar in Euro" eingibt, bekommt man die Währung mit dem aktuellen Kurs umgerechnet. --> 5 U.S. dollars = 3.65657452 Euros

Für diese Funktion möchte ich nun auf Basis des Axis Frameworks ein Webservice schreiben, der einen Wert, die InputWährung und die OutputWährung übergeben bekommt, sich dann mit google verbindet, die Abfrage macht und das Ergebniss wieder zurückgibt.

Soweit die Idee.

Ich habe einen Tomcat Server installiert, darauf Axis und so weiter. Das läuft auch alles ganz gut. Habe bereits erste Webservices geschrieben, die etwas berechnen und jeweils dazu ein jsp Client, mit dem man die zu berechnenden Zahlen an den Webservice übergibt.

Jetzt hänge ich allerdings daran eine Suchanfrage an google zu stellen.

Hat damit von euch schonmal jemand gearbeitet?

Kann mir da jemand weiterhelfen?

Welche archive von google muss ich da importieren / einbinden, mit welchen Befehlen kann man google dann benutzen?

Gruß Sunfy

Geschrieben

Servus,

also ich kenne den Web Service von Google zwar nicht, aber es sollte ja wie bei jedem anderen Web Service auch laufen. Google muss also eine WSDL bereitstellen, in der steht, wie und mit mit welchen Parametern Du den Web Service ansprichst, und was Du von ihm zurückerhältst. Diese WSDL kannst Du bei Axis dazu verwenden, Dir die benötigten Klassen und Interfaces (inkl. Stubs und Skeletons für die Client-Seite) zu erzeugen (dazu gibt es ein Axis Tool, die Doku weiß mehr). Dann hast Du den Zugriff schon schön gekapselt, arbeitest im Normalfall mit Data Transfer Objects für die Parameterübergabe und das Erebnis und kannst mit dem Stub auch aus Deiner JSP (bzw. besser aus dem Servlet) heraus arbeiten.

Wichtig ist also zunächst einmal, die WSDL von Google zu bekommen. Hier gibt es bei der Beschreibung des Web Service bestimmt die benötigten Informationen.

Schöne Grüße,

Peter

Geschrieben

Also, ich habe die Variante mit der googleApi jetzt aufgegeben. Probiere es nun mit der Apache httpClient library.

Ich will damit einfach die website komplett abrufen (...google.de/search?hl=de&q=10+dollar+in+euro&btnG=Google-Suche&meta=) und mir dann mein Ergebnis herausfiltern.

Doch wenn ich nach dem Apache Tutorial vorgehe bekomme ich von meinem Webservice immer eine

Server returned HTTP response code: 500 Fehlermeldung

Code 500 sagt folgendes aus:

Code 500 Teilt dem Client mit, dass der Server einen internen Fehler entdeckt hat und deshalb den Request nicht beantworten kann.

Also habe ich irgendwo im Webservice ein Fehler, doch wo.

Wie kann ich herausfinden, was genau der Fehler ist?

Geschrieben

ich habe jetzt mal verschiedene varianten ausprobiert, doch jedesmal bekomme ich einen Fehlercode 500. Ich habe mal die versch. Varianten aufgelistet.

Als erstes habe ich die Variante aus dem Tutorial von Apache ausprobiert.


public void getHttpRequest(String url) throws Exception {

//     Create an instance of HttpClient.

       HttpClient client = new HttpClient();


       // Create a method instance.

       HttpMethod method = new GetMethod("http://www.google.de");


       // Provide custom retry handler is necessary


       method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 

          		new DefaultHttpMethodRetryHandler(3, true));


       try {

         // Execute the method.

         int statusCode = client.executeMethod(method);


         if (statusCode != HttpStatus.SC_OK) {

           System.err.println("Method failed: " + method.getStatusLine());

         }


         // Read the response body.

         byte[] responseBody = method.getResponseBody();


         // Deal with the response.

         // Use caution: ensure correct character encoding and is not binary data

         text =  (new String(responseBody));


       } catch (HttpException e) {

         System.err.println("Fatal protocol violation: " + e.getMessage());

         e.printStackTrace();

       } catch (IOException e) {

         System.err.println("Fatal transport error: " + e.getMessage());

         e.printStackTrace();

       } finally {

         // Release the connection.

         method.releaseConnection();

       }


   }
Dann mal die folgende Variante

public String getHttpRequest2(String url){

		GetMethod get = new GetMethod("http://www.google.de");

        // execute method and handle any error responses.

		InputStream in = null;

        try {

			in = get.getResponseBodyAsStream();

		} catch (IOException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}

        // Process the data from the input stream.

        get.releaseConnection();

        return in.toString();

	}
und zum Schluss mal

public String getHttpRequest3(String url){

		//create a singular HttpClient object

        HttpClient client = new HttpClient();


        // establish a connection within 5 seconds

        client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);


        HttpMethod method = null;

        //create a method object

        method = new GetMethod(url);

        method.setFollowRedirects(true);


//      execute the method

        String responseBody = null;

        try{

            client.executeMethod(method);

            responseBody = method.getResponseBodyAsString();

        } catch (HttpException he) {

            System.err.println("Http error connecting to '" + url + "'");

            System.err.println(he.getMessage());

            System.exit(-4);

        } catch (IOException ioe){

            System.err.println("Unable to connect to '" + url + "'");

            System.exit(-3);

        }


//      write out the request headers

        System.out.println("*** Request ***");

        System.out.println("Request Path: " + method.getPath());

        System.out.println("Request Query: " + method.getQueryString());

        Header[] requestHeaders = method.getRequestHeaders();

        for (int i=0; i<requestHeaders.length; i++){

            System.out.print(requestHeaders[i]);

        }

        //write out the response headers

        System.out.println("*** Response ***");

        System.out.println("Status Line: " + method.getStatusLine());

        Header[] responseHeaders = method.getResponseHeaders();

        for (int i=0; i<responseHeaders.length; i++){

            System.out.print(responseHeaders[i]);

        }


        //write out the response body

        System.out.println("*** Response Body ***");

        System.out.println(responseBody);


        //clean up the connection resources

        method.releaseConnection();

		return "kein Inhalt";


	}

Geschrieben

Doch jedes mal kommt die Fehlermeldung


WARNING: ERROR: Caughtjava.io.IOException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

java.io.IOException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(Unknown[/url] Source)

	at org.apache.taglibs.io.URLTag.getURLInputStream(URLTag.java:232)

	at org.apache.taglibs.io.URLTag.getURLReader(URLTag.java:217)

	at org.apache.taglibs.io.URLTag.readURL(URLTag.java:285)

	at org.apache.taglibs.io.URLTag.doEndTag(URLTag.java:139)

	at org.apache.jsp.WsClient_jsp._jspService(WsClient_jsp.java:271)

	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

	at java.lang.Thread.run(Unknown Source)

16.08.2007 13:06:11 org.apache.catalina.core.ApplicationContext log

SCHWERWIEGEND: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

java.io.IOException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(Unknown[/url] Source)

	at org.apache.taglibs.io.URLTag.getURLInputStream(URLTag.java:232)

	at org.apache.taglibs.io.URLTag.getURLReader(URLTag.java:217)

	at org.apache.taglibs.io.URLTag.readURL(URLTag.java:285)

	at org.apache.taglibs.io.URLTag.doEndTag(URLTag.java:139)

	at org.apache.jsp.WsClient_jsp._jspService(WsClient_jsp.java:271)

	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

	at java.lang.Thread.run(Unknown Source)

WARNING: Caught Exception: java.io.IOException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

java.io.IOException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(Unknown[/url] Source)

	at org.apache.taglibs.io.URLTag.getURLInputStream(URLTag.java:232)

	at org.apache.taglibs.io.URLTag.getURLReader(URLTag.java:217)

	at org.apache.taglibs.io.URLTag.readURL(URLTag.java:285)

	at org.apache.taglibs.io.URLTag.doEndTag(URLTag.java:139)

	at org.apache.jsp.WsClient_jsp._jspService(WsClient_jsp.java:271)

	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

	at java.lang.Thread.run(Unknown Source)

16.08.2007 13:06:11 org.apache.catalina.core.StandardWrapperValve invoke

SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception

javax.servlet.jsp.JspException: Server returned HTTP response code: 500 for URL: [url]http://localhost:8080/ConverterProject/services/ConverterName[/url]

	at org.apache.taglibs.io.AbstractTag.handleException(AbstractTag.java:69)

	at org.apache.taglibs.io.URLTag.doEndTag(URLTag.java:146)

	at org.apache.jsp.WsClient_jsp._jspService(WsClient_jsp.java:271)

	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

	at java.lang.Thread.run(Unknown Source)

Hat jemand eine Idee, warum der interne Server-error entsteht, und wie ich den beheben kann?

  • 5 Monate später...
Geschrieben

Hallo,

ist das Thema noch aktuell? Bei mir tritt der Fehler auch auf.

Zitat: WebServices - Axis

500: Internal Error

SOAP uses this as a cue that a SOAPFault has been returned, but it can also mean 'the server is not working through some internal fault'

Resume: Somit werde ich mal zwischen den Client und Server mal einen TCPMonitor schalten und schauen was ich da wirklich an den Server versicke :)

LG Boky

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...