Darko Petkovski
Darko Petkovski

Reputation: 3912

HTTPPOST returns 404 ANDROID

Im trying to post to a REST API json object but i keep getting responce 404 but the url is working fine. Can anyone tell me why is this happeninig?

Here is my code:

new AsyncTask<Void, Void, Void>() {

            @Override
            protected Void doInBackground(Void... params) {

                HttpPost request = new HttpPost(
                        "http://grpsvil-webservice.si2001.it/RestChannelApp.svc/CheckCoupon");
                // request.setHeader("Accept", "application/json");
                request.setHeader("Accept", "application/json");
                request.setHeader("Content-type", "application/json");

                try {
                    // Build JSON string
                    JSONStringer vehicle = new JSONStringer()
                            .object()
                            .key("CouponVerificationCode")
                            .value("adf")
                            .key("ApiKey")
                            .value("adfadf123")
                            .key("Token")
                            .value("fgsg342==")
                            .endObject();
                    Log.v("--", vehicle.toString());
                    StringEntity entity = new StringEntity(vehicle.toString());

                    request.setEntity(entity);

                    // Send request to WCF service
                    DefaultHttpClient httpClient = new DefaultHttpClient();
                    HttpResponse response = httpClient.execute(request);
                    int resCode = response.getStatusLine().getStatusCode();
                    Log.v("--", response.getStatusLine().getStatusCode() + "");

                    if (resCode == 200) {

                        Toast.makeText(getApplicationContext(),
                                response.getStatusLine().getStatusCode() + "",
                                Toast.LENGTH_LONG).show();
                        BufferedReader in = new BufferedReader(
                                new InputStreamReader(response.getEntity()
                                        .getContent()));
                        String line = "";
                        StringBuffer returnFromServer = new StringBuffer();

                        while ((line = in.readLine()) != null) {
                            returnFromServer.append(line);
                        }
                        // Toast what we got from server
                        Log.v("--", "!@# " + returnFromServer.toString());

                        if (entity != null) {
                            entity.consumeContent();
                        }

                    }
                } catch (Exception e) {
                    // TODO: handle exception
                }
                Intent i = new Intent(Splash.this, Login.class);
                startActivity(i);
                finish();
                return null;
            }

Upvotes: 0

Views: 3655

Answers (4)

MDMalik
MDMalik

Reputation: 4001

Try sending the verification code like this

ArrayList<NameValuePair> parms = new ArrayList<NameValuePair>();
parms.add(new BasicNameValuePair("CouponVerificationCode", adf));
parms.add(new BasicNameValuePair("ApiKey", adfadf123));
parms.add(new BasicNameValuePair("Token", fgsg342==));

httppost.setEntity(new UrlEncodedFormEntity(parms));

So your overall code will be

HttpPost request = new HttpPost(
                    "http://grpsvil-webservice.si2001.it/RestChannelApp.svc/CheckCoupon");
            // request.setHeader("Accept", "application/json");
            request.setHeader("Accept", "application/json");
            request.setHeader("Content-type", "application/json");

            try {
                ArrayList<NameValuePair> parms = new ArrayList<NameValuePair>();
                parms.add(new BasicNameValuePair("CouponVerificationCode", adf));
                parms.add(new BasicNameValuePair("ApiKey", adfadf123));
                parms.add(new BasicNameValuePair("Token", fgsg342==));
                request.setEntity(new UrlEncodedFormEntity(parms));
                request.setEntity(entity);

                // Send request to WCF service
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpResponse response = httpClient.execute(request);

                int resCode = response.getStatusLine().getStatusCode();
                Log.v("--", response.getStatusLine().getStatusCode() + "");

Upvotes: 1

Mark Buikema
Mark Buikema

Reputation: 2540

The URL returns 404 not found. Just because it shows some fancy error text in the browser, doesn't mean the status code is 200 OK. This is the HTTP response that I get:

Status Code: 404 Not Found
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET,PUT,POST,DELETE
Age: 0
Cache-Control: private
Connection: Keep-Alive
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Date: Thu, 27 Feb 2014 14:58:03 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
access-control-allow-origin: *
x-powered-by: ASP.NET

Upvotes: 1

Enrichman
Enrichman

Reputation: 11337

If you get all the WSDL from http://grpsvil-webservice.si2001.it/RestChannelApp.svc?WSDL you can see all the operations that you have defined.

CheckCoupon is not there, BUT there's a CheckPromotionalCode.

Could be that one?

Upvotes: 1

Lucian Novac
Lucian Novac

Reputation: 1265

Endpoint not found.

Probably you write wrong methode url for this api

Upvotes: 1

Related Questions