sunfy Geschrieben 13. August 2007 Teilen Geschrieben 13. August 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 14. August 2007 Teilen Geschrieben 14. August 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sunfy Geschrieben 16. August 2007 Autor Teilen Geschrieben 16. August 2007 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sunfy Geschrieben 16. August 2007 Autor Teilen Geschrieben 16. August 2007 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"; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sunfy Geschrieben 16. August 2007 Autor Teilen Geschrieben 16. August 2007 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Boky Geschrieben 5. Februar 2008 Teilen Geschrieben 5. Februar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.