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>&nbsp;&nbsp;</b>
<td>&nbsp;</td></tr>
<tr><td bgcolor="#3366cc"><font face=arial,sans-serif
color="#ffffff"><b>Error</b></td></tr>
<tr><td>&nbsp;</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>&nbsp;&nbsp;</b>
> > <td>&nbsp;</td></tr>
> > <tr><td bgcolor="#3366cc"><font face=arial,sans-serif
> > color="#ffffff"><b>Error</b></td></tr>
> > <tr><td>&nbsp;</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

Reply via email to