-1

I am new to Android as well as webservices. I have never used post webservice. Tried as below but it is neither showing success nor failure.

If I use the advanced rest client chrome extension, I am able to test and webservice is working perfectly just that it takes much time.

When trying to run from code, it immediately shows - after calling webservices - toast msg --> indicates it did not call the webservice.

Spent 2 days in it but no luck. Any suggestions?

 public void borrowBook(String barCode, String patronId)
    {
        final int DEFAULT_TIMEOUT = 200000 * 1000000000;

        // Make RESTful webservice call using AsyncHttpClient object
        AsyncHttpClient client = new AsyncHttpClient();
        client.setTimeout(DEFAULT_TIMEOUT);

        progress.setMessage("Please Wait...");
        progress.setIndeterminate(false);
        progress.setCancelable(false);
        progress.show();

        RequestParams params = new RequestParams();

        Toast.makeText(getActivity().getApplicationContext(), "B4 calling webservice", Toast.LENGTH_LONG).show();

        client.post("http://43.555.6.111:8081/SIPServices/SIc.svc/Checkout?barcode=B12&patron=thi", new TextHttpResponseHandler() {
                    @Override
                    public void onSuccess(int i, Header[] headers, String response) {
                        Toast.makeText(getActivity().getApplicationContext(), "Response: " + response, Toast.LENGTH_LONG).show();
                        Log.d("TAG", "Success");
                    }

                    @Override
                    public void onFailure(int statusCode, Header[] headers, String response, Throwable error) {
                        Toast.makeText(getActivity().getApplicationContext(), "Status code :" + statusCode + "errmsg : " + error.getMessage(), Toast.LENGTH_LONG).show();
                        Toast.makeText(getActivity().getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
                        Log.d("TAG", "Failure");
                    }

                }
        );
        progress.dismiss();
        Toast.makeText(getActivity().getApplicationContext(), "After calling webservice", Toast.LENGTH_LONG).show();
    }
Dep
  • 183
  • 1
  • 3
  • 14

2 Answers2

1

You don't set your parameters to anything, and you don't send them. Plus you're trying to do a post call, but the url are with get parameters: "http://43.555.6.111:8081/SIPServices/SIc.svc/Checkout?barcode=B12&patron=thi"

Also consider implementing the onStart method and log it, to see if it even starts.

TP89
  • 106
  • 1
  • 7
  • I tried passing params separately too, but still not working. client.post("http://43.555.6.222:8091/Sices/SIc.svc/Checkout" ,params, new TextHttpResponseHandler() { – Dep Feb 06 '16 at 14:27
0

This is my custom class to handle request. I use json here, you can return and type that you want. All you need are

  • url: http://43.555.6.111:8081/SIPServices/SIc.svc/Checkout
  • method: "POST"
  • params: an arrayList of key and value: barcode=B12&patron=thi

    HashMap<String, String> mValueParams = new HashMap<>();
    mValueParams.put("barcode", "B12");
    mValueParams.put("patron", "thi");
    
    JSONObject json = jsonParser.makeHttpRequest(url, "POST",mValueParams);
    

    public JSONObject makeHttpRequest(String url, String method, HashMap params) {

        sbParams = new StringBuilder();
        int i = 0;
        for (String key : params.keySet()) {
            try {
                if (i != 0) {
                    sbParams.append("&");
                }
                sbParams.append(key).append("=")
                        .append(URLEncoder.encode(params.get(key), charset));
    
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            i++;
        }
    
        if (method.equals("POST")) {
            // request method is POST
            try {
                urlObj = new URL(url);
    
                conn = (HttpURLConnection) urlObj.openConnection();
    
                conn.setDoOutput(true);
    
                conn.setRequestMethod("POST");
    
                conn.setRequestProperty("Accept-Charset", charset);
    
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
    
                conn.connect();
    
                paramsString = sbParams.toString();
    
                wr = new DataOutputStream(conn.getOutputStream());
                wr.writeBytes(paramsString);
                wr.flush();
                wr.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (method.equals("GET")) {
            // request method is GET
    
            if (sbParams.length() != 0) {
                url += "?" + sbParams.toString();
            }
    
            try {
                urlObj = new URL(url);
    
                conn = (HttpURLConnection) urlObj.openConnection();
    
                conn.setDoOutput(false);
    
                conn.setRequestMethod("GET");
    
                conn.setRequestProperty("Accept-Charset", charset);
    
                conn.setConnectTimeout(15000);
    
                conn.connect();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        try {
            //Receive the response from the server
            int status = conn.getResponseCode();
            InputStream in = new BufferedInputStream(conn.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(in, "iso-8859-1"), 8);
            result = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
    
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        conn.disconnect();
    
        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(result.toString());
        } catch (Exception e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
    
        // return JSON Object
        return jObj;
    }