Any takers? I've carried the code over to a regular Java Application and it runs through without a hitch. Hmm, looks I am stuck with a GAE bug?
On Mar 2, 6:54 am, Joa <joachim.pfeif...@gmail.com> wrote: > I am having difficulty POSTing and reading from a web server from GAE. > I can authenticate but the webserver does not accept the XML file I am > POSTing (which includes a query). I am not running the webserver in > question, so I have no insight into what might be wrong at that end > (or set it up differently). > > First, a sanitized snippet of the curl statement that returns the > desired result (on OSX): > $ curlhttp://targetwebserver.org/servlet-u username:password -d '<? > xml version="1.0" encoding="UTF-8" standalone="yes"?><Tag> .... </ > Tag>' > That to me confirm the webserver works alright. > > Below now a snippet of the code (sanitized and rough) that I cannot > get to work. Again, authentication seems to work (I am not getting > responseCode 401), but whatever I have tried, I cannot get over > responseCode 400 and a corresponding boilerplate error message from > the webserver. > > <--------- snip -------> > String requestString = "<?xml version="1.0" encoding="UTF-8" > standalone="yes"?><Tag> .... </Tag>"; // Also tried all sorts of > encoding, no luck > URL url = new URL("targetwebserver.org/servlet "); > HttpURLConnection conn = (HttpURLConnection)url.openConnection(); > conn.setRequestMethod("POST"); > conn.setDoOutput(true); > conn.setDoInput(true); > conn.addRequestProperty("Content-type", "text/xml"); // tried > "application/xml" as well, no luck > > // Authenticate (seems to work OK) > String authData = "username:password"; > byte[] encodedAuthData = new > org.apache.commons.codec.binary.Base64().encode (authData.getBytes()); > String authString = "Basic "; > for (int i = 0; i < encodedAuthData.length; i++) > authString += (char)encodedAuthData[i]; > conn.addRequestProperty ("Authorization", authString); > > // Post request > PrintWriter pw = new PrintWriter(conn.getOutputStream()); // tried > OutputStreamWriter as well, no luck > pw.println(requestString); > pw.close(); > > responseCode = conn.getResponseCode(); > if (responseCode == 200) { > InputStream in = conn.getInputStream(); > BufferedReader rd = new BufferedReader(new > InputStreamReader(conn.getInputStream())); > String line; while ((line = rd.readLine()) != null) > { log.info(line); }} > > <--------- snip -------> > > Please have a look at this - help's appreciated! -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.