Отправка запроса JSON HTTP POST с Android
Я использую приведенный ниже код для отправки запроса http POST, который отправляет объект в службу WCF. Это работает нормально, но что произойдет, если моей службе WCF потребуются и другие параметры? Как я могу отправить их с моего клиента Android?
Это код, который я написал до сих пор:
StringBuilder sb = new StringBuilder(); String http = "http://android.schoolportal.gr/Service.svc/SaveValues"; HttpURLConnection urlConnection=null; try { URL url = new URL(http); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestMethod("POST"); urlConnection.setUseCaches(false); urlConnection.setConnectTimeout(10000); urlConnection.setReadTimeout(10000); urlConnection.setRequestProperty("Content-Type","application/json"); urlConnection.setRequestProperty("Host", "android.schoolportal.gr"); urlConnection.connect(); //Create JSONObject here JSONObject jsonParam = new JSONObject(); jsonParam.put("ID", "25"); jsonParam.put("description", "Real"); jsonParam.put("enable", "true"); OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream()); out.write(jsonParam.toString()); out.close(); int HttpResult =urlConnection.getResponseCode(); if(HttpResult ==HttpURLConnection.HTTP_OK){ BufferedReader br = new BufferedReader(new InputStreamReader( urlConnection.getInputStream(),"utf-8")); String line = null; while ((line = br.readLine()) != null) { sb.append(line + "\n"); } br.close(); System.out.println(""+sb.toString()); }else{ System.out.println(urlConnection.getResponseMessage()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace();}finally{ if(urlConnection!=null) urlConnection.disconnect(); }
Переведено автоматически
Ответ 1
Отправка параметров с помощью POST:-
URL url;URLConnection urlConn;DataOutputStream printout;DataInputStream input;url = new URL (getCodeBase().toString() + "env.tcgi");urlConn = url.openConnection();urlConn.setDoInput (true);urlConn.setDoOutput (true);urlConn.setUseCaches (false);urlConn.setRequestProperty("Content-Type","application/json"); urlConn.setRequestProperty("Host", "android.schoolportal.gr");urlConn.connect(); //Create JSONObject hereJSONObject jsonParam = new JSONObject();jsonParam.put("ID", "25");jsonParam.put("description", "Real");jsonParam.put("enable", "true");
Часть, которую вы пропустили, находится в следующем ... т. е. Следующим образом..
// Send POST output.printout = new DataOutputStream(urlConn.getOutputStream ());printout.writeBytes(URLEncoder.encode(jsonParam.toString(),"UTF-8"));printout.flush ();printout.close ();
Остальное вы можете сделать сами.
Ответ 2
попробуйте что-нибудь вроде blow:
SString otherParametersUrServiceNeed = "Company=acompany&Lng=test&MainPeriod=test&UserID=123&CourseDate=8:10:10";String request = "http://android.schoolportal.gr/Service.svc/SaveValues";URL url = new URL(request); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true);connection.setDoInput(true);connection.setInstanceFollowRedirects(false); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("charset", "utf-8");connection.setRequestProperty("Content-Length", "" + Integer.toString(otherParametersUrServiceNeed.getBytes().length));connection.setUseCaches (false);DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());wr.writeBytes(otherParametersUrServiceNeed); JSONObject jsonParam = new JSONObject();jsonParam.put("ID", "25");jsonParam.put("description", "Real");jsonParam.put("enable", "true");wr.writeBytes(jsonParam.toString());wr.flush();wr.close();
Ссылки :