2012-06-29 3 views
1

Я исправляю некоторые части своего приложения, чтобы использовать новую службу GCM для замены C2DM. Я просто хочу создать запрос JSON из программы Java для тестирования, а затем прочитать ответ. На данный момент я не могу найти никаких проблем с форматированием с помощью моего запроса JSON, и сервер google всегда возвращает код 400, что указывает на проблему с моим JSON. http://developer.android.com/guide/google/gcm/gcm.html#serverAndroid HttpsURLConnection и JSON для нового GCM

JSONObject obj = new JSONObject(); 
    obj.put("collapse_key", "collapse key"); 
    JSONObject data = new JSONObject(); 
    data.put("info1", "info_1"); 
    data.put("info2", "info 2"); 
    data.put("info3", "info_3"); 
    obj.put("data", data); 
    JSONArray ids = new JSONArray(); 
    ids.add(REG_ID); 
    obj.put("registration_ids", ids); 
    System.out.println(obj.toJSONString()); 

напечатать мой запрос на консоли затмений, чтобы проверить это форматирование

Я уверен, что мой ключ API является правильным, как это привело бы к ошибке 401, так сказано в документации Google , Это мой первый опыт JSON, но его легко понять из-за его простоты. У кого-нибудь есть идеи о том, почему я всегда получаю код 400?

обновление: я проверил классы примера сервера google, снабженные gcm, поэтому проблема ДОЛЖНА быть с моим кодом.

{"collapse_key":"new-test-notification","data":{"info1":"info_1","info3":"info_3","info2":"info 2"},"registration_ids":["APA91bG3bmCSltzQYl_yOcjG0LPcR1Qemwg7osYJxImpSuWZftmmIjUGH_CSDG3mswKuV3AAb8GSX7HChOKGAYHz1A_spJus5mXFtfOrK0fouBD7QBpKnfc_ly0t3S8vSYWRjuGxtXrt"]} 
+0

, когда я имел этот вопрос со старым C2DM это означало, что я не был зарегистрирован в службе Google, в чеке консоли разработчика: 1. Вы создаете проект в консоли? 2. Вы включили облачную службу Google для своего проекта в консоли разработчика? 3.i Предположим, что это trival, у которого есть действительный ключ API. – codeScriber

+0

Можете ли вы опубликовать строку JSON запроса, просто распечатайте, что такое выход temp1.toJSONString(). – azgolfer

+0

Только что обновлено с помощью JSON String. Спасибо, все еще есть эта проблема –

ответ

1

Я решил это, используя другой подход, поэтому, возможно, это была моя первоначальная реализация.

List<NameValuePair> list = new ArrayList<NameValuePair>(); 
     list.add(new BasicNameValuePair("username",username)); 
     list.add(new BasicNameValuePair("deviceId",regId)); 
     list.add(new BasicNameValuePair("deviceType","AndroidPhone")); 
     DefaultHttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost("example.url.com"); 
     post.setEntity(new UrlEncodedFormEntity(list)); 
     ResponseHandler<String> handler = new BasicResponseHandler(); 
     HttpResponse response = client.execute(post); 
     String responseString = handler.handleResponse(response); 
     JSONObject jsonResponse = new JSONObject(responseString); 
+0

Что такое ответ в handler.handleResponse (response)? Является ли это функцией обратного вызова для ответа на сервер? Можете ли вы разместить образец кода для этого? благодаря – CuriousCoder

0

Я читаю здесь, что вы должны использовать свой «ключ для браузера приложения» GCM with PHP (Google Cloud Messaging) (в комментариях)

+0

В отличие от ключа для серверных приложений? Я дам это попробовать –

0

Попробуйте воспроизвести ошибку, используя завиток или другой инструмент командной строки, чтобы мы могли устранить возможность того, что в вашей java есть ошибка, которой мы все не хватает.

 Смежные вопросы

  • Нет связанных вопросов^_^