1166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathpackage com.squareup.okhttp.guide; 2166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 3166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport com.squareup.okhttp.OkHttpClient; 4166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.io.BufferedReader; 5166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.io.IOException; 6166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.io.InputStream; 7166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.io.InputStreamReader; 8166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.io.OutputStream; 9166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.net.HttpURLConnection; 10166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathimport java.net.URL; 11166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 12166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamathpublic class PostExample { 13166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath OkHttpClient client = new OkHttpClient(); 14166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 15166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath void run() throws IOException { 16166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath byte[] body = bowlingJson("Jesse", "Jake").getBytes("UTF-8"); 17166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath String result = post(new URL("http://www.roundsapp.com/post"), body); 18166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath System.out.println(result); 19166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 20166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 21166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath String post(URL url, byte[] body) throws IOException { 22166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath HttpURLConnection connection = client.open(url); 23166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath OutputStream out = null; 24166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath InputStream in = null; 25166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath try { 26166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath // Write the request. 27166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath connection.setRequestMethod("POST"); 28166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath out = connection.getOutputStream(); 29166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath out.write(body); 30166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath out.close(); 31166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 32166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath // Read the response. 33166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { 34166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath throw new IOException("Unexpected HTTP response: " 35166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + connection.getResponseCode() + " " + connection.getResponseMessage()); 36166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 37166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath in = connection.getInputStream(); 38166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath return readFirstLine(in); 39166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } finally { 40166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath // Clean up. 41166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath if (out != null) out.close(); 42166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath if (in != null) in.close(); 43166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 44166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 45166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 46166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath String readFirstLine(InputStream in) throws IOException { 47166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); 48166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath return reader.readLine(); 49166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 50166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 51166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath String bowlingJson(String player1, String player2) { 52166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath return "{'winCondition':'HIGH_SCORE'," 53166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "'name':'Bowling'," 54166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "'round':4," 55166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "'lastSaved':1367702411696," 56166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "'dateStarted':1367702378785," 57166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "'players':[" 58166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "{'name':'" + player1 + "','history':[10,8,6,7,8],'color':-13388315,'total':39}," 59166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "{'name':'" + player2 + "','history':[6,10,5,10,10],'color':-48060,'total':41}" 60166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath + "]}"; 61166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 62166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath 63166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath public static void main(String[] args) throws IOException { 64166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath new PostExample().run(); 65166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath } 66166772be0e5cfdaea1a64b9f63e4c8dbfe48cba3Narayan Kamath} 67