2014-07-22 42 views
0

我正在開發一個Java應用程序,作爲Google雲消息傳遞Android應用程序中的服務器。 我一直在關注tutorial,我設法完成了本教程的其餘部分,但沒有遇到任何問題。mapper.writeValue()方法中的錯誤

我的Java應用程序有三個類,分別是Content.java,POST2GCM.java,App.java。這些類按名稱描述。

Content.java類在下面。

package com.hmkcode.vo; 

import java.io.Serializable; 
import java.util.HashMap; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.Map; 

public class Content implements Serializable { 

    private List<String> registration_ids; 
    private Map<String,String> data; 

    public void addRegId(String regId){ 
     if(registration_ids == null) 
      registration_ids = new LinkedList<String>(); 
     registration_ids.add(regId); 
    } 

    public void createData(String title, String message){ 
     if(data == null) 
      data = new HashMap<String,String>(); 

     data.put("title", title); 
     data.put("message", message); 
    } 
} 

App.java類低於

package com.hmkcode.vo; 

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

import com.fasterxml.jackson.databind.ObjectMapper; 
import com.hmkcode.vo.Content; 

public class App 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Sending POST to GCM"); 

     String apiKey = "AIzaSyB8azikXJKi_NjpWcVNJVO0d........"; 
     Content content = createContent(); 

     POST2GCM.post(apiKey, content); 
    } 

    public static Content createContent(){ 

     Content c = new Content(); 

     c.addRegId("APA91bFqnQzp0z5IpXWdth1lagGQZw1PTbdBAD13c-UQ0T76BBYVsFrY96MA4SFduBW9RzDguLaad-7l4QWluQcP6zSoX1HSUaAzQYSmI93...."); 
     c.createData("Test Title", "Test Message"); 

     return c; 
    } 
} 

POST2GCM.java類低於

package com.hmkcode.vo; 

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import com.fasterxml.jackson.databind.*; 
public class POST2GCM { 

    public static void post(String apiKey, Content content){ 

     try{ 

     // 1. URL 
     URL url = new URL("https://android.googleapis.com/gcm/send"); 

     // 2. Open connection 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

     // 3. Specify POST method 
     conn.setRequestMethod("POST"); 

     // 4. Set the headers 
     conn.setRequestProperty("Content-Type", "application/json"); 
     conn.setRequestProperty("Authorization", "key="+apiKey); 

     conn.setDoOutput(true); 

      // 5. Add JSON data into POST request body 

      //`5.1 Use Jackson object mapper to convert Content object into JSON 
      ObjectMapper mapper = new ObjectMapper(); 

      // 5.2 Get connection output stream 
      DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); 

      // 5.3 Copy Content "JSON" into 

      mapper.writeValue(wr,content); 

      // 5.4 Send the request 
      wr.flush(); 

      // 5.5 close 
      wr.close(); 

      // 6. Get the response 
      int responseCode = conn.getResponseCode(); 
      System.out.println("\nSending 'POST' request to URL : " + url); 
      System.out.println("Response Code : " + responseCode); 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(conn.getInputStream())); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 
      in.close(); 

      // 7. Print result 
      System.out.println(response.toString()); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
} 

在POST2GCM.java類問題出現,在該行

mapper.writeValue(wr,content); 

哪裏的建議是添加try catch塊,向方法簽名添加異常,添加catch子句。 我做了所有沒有解決問題的建議。

這裏會出現什麼問題?

+0

你的錯誤是什麼? –

+0

它沒有指定錯誤,因爲我沒有編譯代碼。有紅線表示有錯誤。這些建議是我上面評論過的。 – user3865011

+0

我沒有編譯它,因爲我知道當我添加try和catch塊時已經有一個錯誤 – user3865011

回答

0

您需要將jackson-core-2.4.3.jar庫文件添加到您的項目中。 也將它添加到你的java構建路徑。

當然... 2.4.3是我使用的版本,但它應該適用於以前的版本。