/** * prepare the HTTP connection * * @param conn * @throws IOException */ private void configureConncetion(HttpConnection conn) throws IOException { conn.setRequestProperty("User-Agent", ua); String locale = System.getProperty("microedition.locale"); if (locale == null) { locale = "en-US"; } conn.setRequestProperty("Accept-Language", locale); conn.setRequestProperty("Content-Type", "text/json"); conn.setRequestProperty("Accept", "text/plain"); conn.setRequestProperty("appKey", "929e65a6-7a88-4c4c-a75b-d40d18cdabbb"); }
private Object request( String url, boolean post, Hashtable params, boolean basicAuth, boolean processOutput) throws Exception { HttpConnection conn = null; Writer writer = null; InputStream is = null; try { if (!post && (params != null)) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(baos, this.encoding); this.encodeParams(params, osw); osw.flush(); osw.close(); osw = null; url += "?" + new String(baos.toByteArray(), this.encoding); baos = null; } conn = (HttpConnection) Connector.open(url); conn.setRequestMethod(post ? HttpConnection.POST : HttpConnection.GET); if (basicAuth) { if (!this.areCredentialsSet()) throw new Exception("Credentials are not set"); String token = base64Encode((this.user + ":" + this.pass).getBytes(this.encoding)); conn.setRequestProperty("Authorization", "Basic " + token); } if (post && (params != null)) { OutputStream os = conn.openOutputStream(); writer = new OutputStreamWriter(os, this.encoding); this.encodeParams(params, writer); writer.flush(); writer.close(); os = null; writer = null; } int code = conn.getResponseCode(); if ((code != 200) && (code != 302)) throw new Exception("Unexpected response code " + code + ": " + conn.getResponseMessage()); is = conn.openInputStream(); if (processOutput) { synchronized (this.json) { return this.json.parse(is); } } else { this.pump(is, System.out, 1024); return null; } } finally { if (writer != null) writer.close(); if (is != null) is.close(); if (conn != null) conn.close(); } }
private String getContent(String url) { HttpConnection httemp = null; InputStream istemp = null; String content = ""; try { httemp = (HttpConnection) Connector.open(url); httemp.setRequestProperty("Connection", "cl" + "ose"); if (HttpConnection.HTTP_OK != httemp.getResponseCode()) { throw new IOException(); } istemp = httemp.openInputStream(); int length = (int) httemp.getLength(); if (-1 != length) { byte[] bytes = new byte[length]; istemp.read(bytes); content = new String(bytes); } else { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); while (true) { int ch = istemp.read(); if (-1 == ch) break; bytes.write(ch); } content = new String(bytes.toByteArray()); bytes.close(); } } catch (Exception e) { content = "Error: " + e.getMessage(); } try { httemp.close(); istemp.close(); } catch (Exception e) { } return StringConvertor.removeCr(content); }
public InputStream makeRequest(String url, OutputStream pos) throws IOException { HttpConnection conn = null; ByteArrayOutputStream bos = null; DataInputStream is = null; DataOutputStream os = null; InputStream pis = null; try { conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE); conn.setRequestMethod(HttpConnection.POST); conn.setRequestProperty("Content-Type", "application/octet-stream"); conn.setRequestProperty("Accept", "application/octet-stream"); if (sessionCookie == null) { conn.setRequestProperty("version", "???"); } else { conn.setRequestProperty("cookie", sessionCookie); } // Getting the output stream may flush the headers os = conn.openDataOutputStream(); os.write(pos.getBytes()); os.close(); int responseCode; try { responseCode = conn.getResponseCode(); } catch (IOException e) { throw new IOException("No response from " + url); } if (responseCode != HttpConnection.HTTP_OK) { throw new IllegalArgumentException(); } bos = new ByteArrayOutputStream(); { is = conn.openDataInputStream(); String sc = conn.getHeaderField("set-cookie"); if (sc != null) { sessionCookie = sc; } while (true) { int ch = is.read(); if (ch == -1) break; bos.write(ch); } is.close(); is = null; conn.close(); conn = null; } pis = new InputStream(bos.toByteArray()); bos.close(); bos = null; } catch (Exception e) { e.printStackTrace(); try { if (conn != null) { conn.close(); conn = null; } if (bos != null) { bos.close(); bos = null; } if (is != null) { is.close(); is = null; } } catch (Exception exc) { } throw new IOException(); } return pis; }
/** * UPDATE * * @param url * @param data the request body * @throws IOException */ public String post(String url, String data) throws IOException { HttpConnection hcon = null; DataInputStream dis = null; DataOutputStream dos = null; StringBuffer responseMessage = new StringBuffer(); try { int redirectTimes = 0; boolean redirect; do { redirect = false; // an HttpConnection with both read and write access hcon = getConnection(url, Connector.READ_WRITE); // set the request method to POST hcon.setRequestMethod(HttpConnection.POST); // overwrite content type to be form based hcon.setRequestProperty("Content-Type", "application/json"); // set message length if (data != null) { hcon.setRequestProperty("Content-Length", "" + data.length()); } if (data != null) { // obtain DataOutputStream for sending the request string dos = hcon.openDataOutputStream(); byte[] request_body = data.getBytes(); // send request string to server for (int i = 0; i < request_body.length; i++) { dos.writeByte(request_body[i]); } // end for( int i = 0; i < request_body.length; i++ ) dos.flush(); // Including this line may produce // undesiredresults on certain devices } // obtain DataInputStream for receiving server response dis = new DataInputStream(hcon.openInputStream()); // retrieve the response from server int ch; while ((ch = dis.read()) != -1) { responseMessage.append((char) ch); } // end while( ( ch = dis.read() ) != -1 ) { // check status code int status = hcon.getResponseCode(); switch (status) { case HttpConnection.HTTP_OK: // Success! break; case HttpConnection.HTTP_TEMP_REDIRECT: case HttpConnection.HTTP_MOVED_TEMP: case HttpConnection.HTTP_MOVED_PERM: // Redirect: get the new location url = hcon.getHeaderField("location"); System.out.println("Redirect: " + url); if (dis != null) dis.close(); if (hcon != null) hcon.close(); hcon = null; redirectTimes++; redirect = true; break; default: // Error: throw exception hcon.close(); throw new IOException("Response status not OK:" + status); } // max 5 redirects } while (redirect == true && redirectTimes < 5); if (redirectTimes == 5) { throw new IOException("Too much redirects"); } } catch (Exception e) { e.printStackTrace(); responseMessage.append("ERROR"); } finally { // free up i/o streams and http connection try { if (hcon != null) hcon.close(); if (dis != null) dis.close(); if (dos != null) dos.close(); } catch (IOException ioe) { ioe.printStackTrace(); } // end try/catch } // end try/catch/finally return responseMessage.toString(); }