通过http post方法传递参数

时间:2014-03-12 09:29:47

标签: java http-post

我有两个文本框,一个用于用户名,另一个用于密码。 我想通过post方法

传递用户输入的编辑文本
String request = "https://beta135.hamarisuraksha.com/web/webservice/HamariSurakshaMobile.asmx/getIMSafeAccountInfoOnLogon";
                URL url;

                try {
                    url = new URL(request);
                    HttpURLConnection connection = (HttpURLConnection) url
                            .openConnection();
                    connection.setDoOutput(true);
                    connection.setDoInput(true);
                    connection.setInstanceFollowRedirects(false);
                    connection.setRequestMethod("POST");
                    connection.setRequestProperty("Connection", "Keep-Alive");
                    connection.setRequestProperty("Content-Type",
                            "application/x-www-form-urlencoded;");// boundary="+CommonFunctions.boundary
                    connection.setUseCaches(false);

                    DataOutputStream wr = new DataOutputStream(
                            connection.getOutputStream());
                    wr.writeBytes(urlParameters);
                    wr.flush();
                    wr.close();


                    int responseCode = connection.getResponseCode();
                    /*
                     * System.out.println("\nSending 'POST' request to URL : " +
                     * url); System.out.println("Post parameters : " +
                     * urlParameters);
                     */
                    System.out.println("Response Code : " + responseCode);

                    InputStream errorstream = connection.getErrorStream();

                    BufferedReader br = null;
                    if (errorstream == null) {
                        InputStream inputstream = connection.getInputStream();
                        br = new BufferedReader(new InputStreamReader(inputstream));
                    } else {
                        br = new BufferedReader(new InputStreamReader(errorstream));
                    }
                    String response = "";
                    String nachricht;
                    while ((nachricht = br.readLine()) != null) {
                        response += nachricht;
                    }

                    // print result
                    // System.out.println(response.toString());
                    return response.toString();

                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return null;
                } catch (ProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return null;
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return null;
                }
            }

1 个答案:

答案 0 :(得分:0)

如果我正确地提出您的问题,您需要将参数传递给Web服务。在我的情况下,我已经实现了一个方法来获取Web服务响应,方法是将url和值作为参数。我认为这会对你有帮助。

public JSONObject getJSONFromUrl(JSONObject parm,String url) throws JSONException {


         InputStream is = null;
         JSONObject jObj = null;
         String json = "";
        // Making HTTP request
        try {
            // defaultHttpClient
            /*JSONObject parm = new JSONObject();
            parm.put("agencyId", 27);
            parm.put("caregiverPersonId", 47);*/

        /*  if(!(jObj.isNull("d"))){
                jObj=null;
            }
            */


            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            httpPost.addHeader("Content-Type", "application/json; charset=utf-8");
            HttpEntity body = new StringEntity(parm.toString(), "utf8");
            httpPost.setEntity(body);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            is = httpEntity.getContent();          

               /* String response = EntityUtils.toString(httpEntity);
                Log.w("myApp", response);*/

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

     //   JSONObject jObj2 = new JSONObject(json);
        // try parse the string to a JSON object
        try {
             jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }

此方法采用两个参数。一个是url,另一个是我们应该发送给Web服务的值。并简单地返回json对象。希望这会对你有所帮助

修改

传递您的用户名和密码只需使用以下代码

    JsonParser jp = new JsonParser();  // create instance for the jsonparse class

    String caregiverID = MainActivity.confirm.toString();

    JSONObject param = new JSONObject();
    JSONObject job =  new JSONObject();
    try {
        param.put("username", yourUserNAme);
        job = jp.getJSONFromUrl(param, yourURL);