Hi,
hab ein rießen Problem mit eBay und SOAP Message empfangen -> auslesen.
Also folgendes. Wenn man bei eBay ein Produkt erfolgreich verkauft hat, dann wird ja eig. dem Verkäufer eine email mit der Bestätigung zu gesendet. Dies kann man mittels eBay API eben umschreiben und sich die SOAP Message auf den Server schicken lassen, um dort damit weiter zu arbeiten...
Das sieht wie folgt aus:
Wie man bei der auskommentierten Zeile sieht, hab ich versucht mir die SOAP Message an eine Email Adresse zu schicken. Das klappt wunder bar,...ich bekomm also den Inhalt der SOAP Message na die Email Adresse geschickt. Mein Problem ist nur, dass wenn ich den Server angeb, dass ich dann nix bekomm. Bzw. vielleicht bekomm ich ja was, und ich reagier nur falsch drauf. Aber ich hab zum testen des ganzen ein bsp. Listener von eBay verwendt.
Hier mal die doPost()-Methode:
Ich wäre wirklich sehr sehr sehr glücklich über jede Hilfe, die ich bekommen kann,...und wenn sie noch so klein sein mag.
Mit freundlichen Grüßen
DayXtry
PS.: Sollte noch mehr Code zum Verständnis benötigt werden, einfach bescheid sagen. Die Kommentare im Code wurden von mir verfasst, also wenn da fehler enthalten sein sollten, nicht wundern (da eBay einen etwas mager kommentierten Code zur Verfügung stellt). (ist wirklich im wahrsten Sinne des Wortes ein Hilfeschrei)
hab ein rießen Problem mit eBay und SOAP Message empfangen -> auslesen.
Also folgendes. Wenn man bei eBay ein Produkt erfolgreich verkauft hat, dann wird ja eig. dem Verkäufer eine email mit der Bestätigung zu gesendet. Dies kann man mittels eBay API eben umschreiben und sich die SOAP Message auf den Server schicken lassen, um dort damit weiter zu arbeiten...
Das sieht wie folgt aus:
Code:
// Register the eBay user and the Application
...
...
...
// Create and Set the App Level Preference
ApplicationDeliveryPreferencesType appDeliveryPref = new ApplicationDeliveryPreferencesType();
org.apache.axis.types.URI uri = new org.apache.axis.types.URI();
try {
//uri.setScheme("mailto");
// URL from Webserver where the application runs
uri.setPath("http://138.232.185.227:8084/notification2/");
//uri.setPath("mailto:juergen.ulrich1@web.de");
} catch (Exception e) {
e.printStackTrace();
}
appDeliveryPref.setApplicationURL(uri);
appDeliveryPref.setNotificationPayloadType(NotificationPayloadTypeCodeType.eBLSchemaSOAP);
appDeliveryPref.setApplicationEnable(EnableCodeType.Enable);
api.setApplicationDeliveryPreferences(appDeliveryPref);
...
...
...
Wie man bei der auskommentierten Zeile sieht, hab ich versucht mir die SOAP Message an eine Email Adresse zu schicken. Das klappt wunder bar,...ich bekomm also den Inhalt der SOAP Message na die Email Adresse geschickt. Mein Problem ist nur, dass wenn ich den Server angeb, dass ich dann nix bekomm. Bzw. vielleicht bekomm ich ja was, und ich reagier nur falsch drauf. Aber ich hab zum testen des ganzen ein bsp. Listener von eBay verwendt.
Hier mal die doPost()-Methode:
Code:
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// Getting The Header Of The Soap request
MimeHeaders headers = getHeaders(request);
// Get the body of the SOAP request
InputStream is = request.getInputStream();
/*
SOAPMessage message = SOAPUtil.setMessage(is,headers);
OutputStream os = response.getOutputStream();
message.writeTo(os);
os.flush();
*/
// Process Notification http header
String notiEvent = null;
java.util.Enumeration headenum = request.getHeaderNames();
while(headenum.hasMoreElements()){
String headname = (String)headenum.nextElement();
String headvalue = request.getHeader(headname);
if (headname.equalsIgnoreCase("SOAPACTION")){
int last = headvalue.lastIndexOf("/");
notiEvent =headvalue.substring(last+1,headvalue.length());
System.out.println(headname + " : " + headvalue);
System.out.println("NOTIFICATION EVENT : " + notiEvent);
}
}
String rootElement= null;
for ( int i = 0; i< noticationevents.length; i++) {
String eventname = noticationevents[i];
if ( notiEvent.equalsIgnoreCase(eventname)){
rootElement = noticationtopelements[i];
System.out.println("ROOTELEMENT : " +rootElement);
}
}
// read input string
// Es muss eine Methode onMessage enthalten sein, welche aufgerufen und abgearbeitet wird,
// sobald eine Nachricht eintrifft
Object obj = onMessage(is, rootElement);//"GetItemResponse" );
ItemType itemtype =null;
if (obj !=null && obj instanceof GetItemResponseType) {
GetItemResponseType girt = (GetItemResponseType)obj;
traverseItem(girt);
System.out.println( "GET EVENT NAME : "+ girt.getNotificationEventName());
itemtype = girt.getItem();
PrintWriter pw = response.getWriter();
pw.println("<html><head>");
pw.println("</head><body><h3> the itemId is " + itemtype.getItemID()+"</h3>");
pw.println("</bodY></html>");
}
if (obj !=null && obj instanceof GetItemTransactionsResponseType) {
GetItemTransactionsResponseType girt = (GetItemTransactionsResponseType)obj;
itemTransac(girt);
System.out.println( "Notification: "+ girt.getNotificationEventName());
}
}catch (Exception e) {
e.printStackTrace();
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
//response.setStatus(HttpServletResponse.SC_OK);
}
Ich wäre wirklich sehr sehr sehr glücklich über jede Hilfe, die ich bekommen kann,...und wenn sie noch so klein sein mag.
Mit freundlichen Grüßen
DayXtry
PS.: Sollte noch mehr Code zum Verständnis benötigt werden, einfach bescheid sagen. Die Kommentare im Code wurden von mir verfasst, also wenn da fehler enthalten sein sollten, nicht wundern (da eBay einen etwas mager kommentierten Code zur Verfügung stellt). (ist wirklich im wahrsten Sinne des Wortes ein Hilfeschrei)