Hi Nagaraj, did you solve the problem?
I'm having just the same problem!!! And I start to think it's not my mistake because I have changed https for http and taken tcpdump traces and I have seen that I am sending the header. I have tested it with several lower case upper case combinations. My code is: public static String C2DM_URL = "https://android.apis.google.com/c2dm/ send"; public String sendMessage(String registrationID, String source, String destination, String message, String collapseKey, String authToken) throws Exception{ Protocol myhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 443); HttpClient httpclient = new HttpClient(); httpclient.getHostConfiguration().setHost("android.apis.google.com", 443, myhttps); PostMethod httppost = new PostMethod(C2DM_URL); try { httppost.addRequestHeader("Authorization", "GoogleLogin auth=" + authToken); httppost.addRequestHeader("Content-Type", "application/x-www-form- urlencoded"); httppost.addParameter("registration_id", registrationID); httppost.addParameter("collapse_key", collapseKey); httppost.addParameter("data.receiver", destination); httppost.addParameter("data.source", source); httppost.addParameter("data.message", message); httppost.addRequestHeader("Content-Length", ""+httppost.getRequestEntity().getContentLength()); httppost.addRequestHeader("Content-length", ""+httppost.getRequestEntity().getContentLength()); httppost.addRequestHeader("content-length", ""+httppost.getRequestEntity().getContentLength()); httpclient.executeMethod(httppost); return new String(httppost.getResponseBody()); } finally { httppost.releaseConnection(); } } Does anybody see any mistake? Does anybody know what can be the problem? Is it possible to contact someone at Google to try to see what's happening? Here is the HTTP request/response: POST /c2dm/send HTTP/1.1 Authorization: GoogleLogin auth=SID=DQAAALwAAAA7O-9sDrg_FXztPEQ7fcfqBmPtCtIcN3gX4wTsXf7AmfQh5eetqv5jQm6FGt7QvjMJNaoZFlLNG- pTSPl07dQWCwM2tNSnbFCS6FO- Xe0Q0SJ6Ok4gipqqArAB2uh7mvgtHRguiWaP38IRVHcQjG4fhpo0K6LIZN0fBoE__FXl5ukqsIVc8Qo_ezXOspC_MZew76G6AvfkqwyMTM7XWzrgHDT9D9MlbgnuAWpR_XOA1KKOVO- eHFXp1UsCE6FM6mQ LSID=DQAAAL8AAADFjsO1Q_TnSqwZgm3HYxQsb08JcQxFwC_oucPZ3eEiqFNLhuQWJI_ZVS- iMuZKphHsmghU7I1sQPkFC_Iu0Jc0Fba4efoUYHcq- TBjLJgPQW-8aQVFMEobmMhkTJUUr0iXAibZV2Bbwd7HalGh1oZU07AtvQa7T- NMv7LUZT8rSYeSZ8kHBXKYaUHjVykVAAKmw2gS3ZDxpiklgSg8VmSyU6788JwH6lh2VpDzs1r0yoH55qOZD8gzBls64i5Lwgk Auth=DQAAAL8AAAD3PzwO5BSHo_TzqwD-QyTVM73-vxDAlUs8fkzbLoX5lHr6YI- D0IznRSnYoJshE9LDjtm78vcpbieT_RGBS9pnWXFier8l8uVQwITP0SLJnH2QMla4qLzylDANSqIIDdm_MY91t1wjGGivaTr5mOB_4w-0NQx_QvSQwyl-- eZnEkkH-80Ul_HJYzLv6TneYGd9q1q6UUAgDszesHzBQYullYvmwY1aF2wbVCUKF4urS_ynONL55aYg01ccShzExjs Content-Type: application/x-www-form-urlencoded Content-Length: 209 User-Agent: Jakarta Commons-HttpClient/3.1 Host: android.apis.google.com registration_id=APA91bEhZNjB1KZRlIzolrG_oXBpn0uTxPsoX22L5Xz- i9DTK38PRNe4QgoMTG9L4mrGlx33t6k39vRewVFRF7SAMbVSj62ESJ5o1gAdfANSiC6SCdXzAfE&collapse_key=12345&data.receiver=1234&data.source=12345&data.message=holaHTTP/ 1.0 411 Length Required Content-Type: text/html; charset=UTF-8 Content-Length: 1363 Date: Mon, 27 Dec 2010 16:30:22 GMT Server: GFE/2.0 <html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>411 Length Required</title> <style><!-- body {font-family: arial,sans-serif} div.nav {margin-top: 1ex} div.nav A {font-size: 10pt; font-family: arial,sans-serif} span.nav {font-size: 10pt; font-family: arial,sans-serif; font-weight: bold} div.nav A,span.big {font-size: 12pt; color: #0000cc} div.nav A {font-size: 10pt; color: black} A.l:link {color: #6f6f6f} A.u:link {color: green} //--></style> <script><!-- var rc=411; //--> </script> </head> <body text=#000000 bgcolor=#ffffff> <table border=0 cellpadding=2 cellspacing=0 width=100%><tr><td rowspan=3 width=1% nowrap> <b><font face=times color=#0039b6 size=10>G</font><font face=times color=#c41200 size=10>o</font><font face=times color=#f3c518 size=10>o</font><font face=times color=#0039b6 size=10>g</font><font face=times color=#30a72f size=10>l</font><font face=times color=#c41200 size=10>e</font> </b> <td> </td></tr> <tr><td bgcolor="#3366cc"><font face=arial,sans-serif color="#ffffff"><b>Error</b></td></tr> <tr><td> </td></tr></table> <blockquote> <H1>Length Required</H1> POST requests require a <code>Content-length</code> header. <p> </blockquote> <table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor="#3366cc"><img alt="" width=1 height=4></td></tr></table> </body></html> On Dec 24, 3:23 pm, Nagaraj Ramarao <nraj.tes...@gmail.com> wrote: > Can someone knowledgable with C2DM help me resolve this issue please. > > Thanks > Nagaraj > > On Thu, Dec 23, 2010 at 10:20 AM, nagaraj <nraj.tes...@gmail.com> wrote: > > I am trying to push data from my server hosting a webservice but I get > > the following error: > > > <html><head> > > <meta http-equiv="content-type" content="text/html;charset=utf-8"> > > <title>411 Length Required</title> > > <style><!-- > > body {font-family: arial,sans-serif} > > div.nav {margin-top: 1ex} > > div.nav A {font-size: 10pt; font-family: arial,sans-serif} > > span.nav {font-size: 10pt; font-family: arial,sans-serif; font-weight: > > bold} > > div.nav A,span.big {font-size: 12pt; color: #0000cc} > > div.nav A {font-size: 10pt; color: black} > > A.l:link {color: #6f6f6f} > > A.u:link {color: green} > > //--></style> > > <script><!-- > > var rc=411; > > //--> > > </script> > > </head> > > <body text=#000000 bgcolor=#ffffff> > > <table border=0 cellpadding=2 cellspacing=0 width=100%><tr><td > > rowspan=3 width=1% nowrap> > > <b><font face=times color=#0039b6 size=10>G</font><font face=times > > color=#c41200 size=10>o</font><font face=times color=#f3c518 > > size=10>o</font><font face=times color=#0039b6 size=10>g</font><font > > face=times color=#30a72f size=10>l</font><font face=times > > color=#c41200 size=10>e</font> </b> > > <td> </td></tr> > > <tr><td bgcolor="#3366cc"><font face=arial,sans-serif > > color="#ffffff"><b>Error</b></td></tr> > > <tr><td> </td></tr></table> > > <blockquote> > > <H1>Length Required</H1> > > POST requests require a <code>Content-length</code> header. > > > <p> > > </blockquote> > > <table width=100% cellpadding=0 cellspacing=0><tr><td > > bgcolor="#3366cc"><img alt="" width=1 height=4></td></tr></table> > > </body></html> > > > Here is the java code that posts message to google c2dm which inturn > > will send a push notification to the device: > > > private void postData(String auth, String id, String data) { > > DefaultHttpClient client = new DefaultHttpClient(); > > HttpPost httppost = new HttpPost( > > "https://android.apis.google.com/c2dm/send"); > > List<NameValuePair> formparams = new ArrayList<NameValuePair>(); > > formparams.add(new BasicNameValuePair("registration_id", id)); > > formparams.add(new BasicNameValuePair("data.payload", data)); > > formparams.add(new BasicNameValuePair("collapse_key", "something")); > > //formparams.add(new BasicNameValuePair("Content-length", > > ""+data.length())); > > > if (null != id) { > > formparams.add(new BasicNameValuePair("id", id)); > > } > > UrlEncodedFormEntity entity = null; > > try { > > entity = new UrlEncodedFormEntity(formparams, "UTF-8"); > > } catch (UnsupportedEncodingException e1) { > > // TODO Auto-generated catch block > > e1.printStackTrace(); > > } > > httppost.setEntity(entity); > > Header header = new BasicHeader("Authorization: GoogleLogin auth=", > > auth); > > Header header2 = new BasicHeader("Content-length=", > > ""+data.length()); > > httppost.addHeader(header); > > httppost.addHeader(header2); > > httppost.getParams().setParameter("Content-length:", > > ""+data.length()); > > HttpContext localContext = new BasicHttpContext(); > > HttpResponse response = null; > > try { > > response = client.execute(httppost, localContext); > > HttpEntity entity2 = response.getEntity(); > > > System.out.println("----------------------------------------"); > > System.out.println(response.getStatusLine()); > > Header[] headers = response.getAllHeaders(); > > for (int i = 0; i < headers.length; i++) { > > System.out.println(headers[i]); > > } > > System.out.println("----------------------------------------"); > > > if (response.getEntity() != null) { > > System.out.println(EntityUtils.toString(response.getEntity())); > > } > > > } catch (Exception e) { > > System.err.println(e); > > } finally { > > } > > } > > > Note: > > 1. I successfully got the registration id from the client (device) > > 2. I successfully get the "Auth" from an earlier post on the server > > side > > > Any help will be greatly appreciated > > > Thank you > > -Nagaraj -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en