Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML response from server

Tags:

json

android

post

I have an app that submits some from data to a local server and as a result the server will send back a JSON. say {status:"success"}

Its working when I run the app in my 2.3 SDK emulator, but installed in a Galaxy Tab (2.2 SDK) the same response is in the form of a html.

I/RESPONSE( 8190): <?xml version="1.0" encoding="utf-8"?>
I/RESPONSE( 8190): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
I/RESPONSE( 8190):  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
I/RESPONSE( 8190): <html>
I/RESPONSE( 8190):   <head>
I/RESPONSE( 8190):     <title>417 Expectation Failed</title>
I/RESPONSE( 8190):   </head>
I/RESPONSE( 8190):   <body>
I/RESPONSE( 8190):     <h1>Error 417 Expectation Failed</h1>
I/RESPONSE( 8190):     <p>Expectation Failed</p>
I/RESPONSE( 8190):     <h3>Guru Meditation:</h3>
I/RESPONSE( 8190):     <p>XID: 1902486816</p>
I/RESPONSE( 8190):     <hr>
I/RESPONSE( 8190):     <address>
I/RESPONSE( 8190):        <a href="http://www.varnish-cache.org/">Varnish cache server</a>
I/RESPONSE( 8190):     </address>
I/RESPONSE( 8190):   </body>
I/RESPONSE( 8190): </html>
I/RESPONSE( 8190):  <--
I/RESPONSE( 8190): 
I/RESPONSE( 8190): <?xml version="1.0" encoding="utf-8"?>
I/RESPONSE( 8190): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
I/RESPONSE( 8190):  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
I/RESPONSE( 8190): <html>
I/RESPONSE( 8190):   <head>
I/RESPONSE( 8190):     <title>417 Expectation Failed</title>
I/RESPONSE( 8190):   </head>
I/RESPONSE( 8190):   <body>
I/RESPONSE( 8190):     <h1>Error 417 Expectation Failed</h1>
I/RESPONSE( 8190):     <p>Expectation Failed</p>
I/RESPONSE( 8190):     <h3>Guru Meditation:</h3>
I/RESPONSE( 8190):     <p>XID: 1902486816</p>
I/RESPONSE( 8190):     <hr>
I/RESPONSE( 8190):     <address>
I/RESPONSE( 8190):        <a href="http://www.varnish-cache.org/">Varnish cache server</a>
I/RESPONSE( 8190):     </address>
I/RESPONSE( 8190):   </body>
I/RESPONSE( 8190): </html>
W/System.err( 8190): org.json.JSONException: A JSONObject text must begin with '{' at character 2 of 
W/System.err( 8190): <?xml version="1.0" encoding="utf-8"?>
W/System.err( 8190): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
W/System.err( 8190):  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
W/System.err( 8190): <html>
W/System.err( 8190):   <head>
W/System.err( 8190):     <title>417 Expectation Failed</title>
W/System.err( 8190):   </head>
W/System.err( 8190):   <body>
W/System.err( 8190):     <h1>Error 417 Expectation Failed</h1>
W/System.err( 8190):     <p>Expectation Failed</p>
W/System.err( 8190):     <h3>Guru Meditation:</h3>
W/System.err( 8190):     <p>XID: 1902486816</p>
W/System.err( 8190):     <hr>
W/System.err( 8190):     <address>
W/System.err( 8190):        <a href="http://www.varnish-cache.org/">Varnish cache server</a>
W/System.err( 8190):     </address>
W/System.err( 8190):   </body>
W/System.err( 8190): </html>

Edit: Request sending:-

            try {
                HttpClient client = new DefaultHttpClient();
                String postURL = GlobalCodes.getBaseurl();
                HttpPost post = new HttpPost(postURL);
                List<NameValuePair> params = new ArrayList<NameValuePair>();

                    params.add(new BasicNameValuePair("show",
                            "testpost"));

                post.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse responsePOST = client.execute(post);
                HttpEntity resEntity = responsePOST.getEntity();
                String str2 = EntityUtils.toString(resEntity);
                Log.i("RESPONSE", " <--");
                if (resEntity != null) {
                    Log.i("RESPONSE","**");
                    JSONObject jsonObj = new JSONObject(str2);
                    if (jsonObj.getString("status").equalsIgnoreCase("succuss")) {
                         .....
                    } else {
                        ......
                    }

                }
            } catch (Exception e) {
                e.printStackTrace();

            }

can any one tell me whats going wrong?

Happy Coding..!

like image 802
rahul Avatar asked Oct 14 '11 04:10

rahul


2 Answers

The Galaxy Tab must be sending different headers to the emulator. Try disabling the expectation header on your HttpPost object.

httppost.getParams().setBooleanParameter( "http.protocol.expect-continue", false )

Also see expectation failed in android during photo upload

like image 97
railwayparade Avatar answered Sep 27 '22 16:09

railwayparade


Just check this line:

W/System.err( 8190): org.json.JSONException: A JSONObject text must begin with '{' at character 2 of 

I am sure you have made a mistake while creating/encoding JSON object on server side.

like image 37
Paresh Mayani Avatar answered Sep 27 '22 15:09

Paresh Mayani