1

Я новичок в программировании на Android, и я следил за этим tutorial , чтобы создать программу сервера GCM. Однако я столкнулся с разочаровывающей ошибкой и очень признателен за любую помощь.Jackson Unhandled Exception?

Это мой POST2GCM класс:

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; 


public class POST2GCM extends Content { 

private static final long serialVersionUID = 1L; 

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 Contnet 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(); 
      } 
     } 
} 

Я включил файл "джексон-DataBind-2.5.1.jar", но я получаю ошибку:

Unhandled Exception: com.fasterxml.jackson.databind.JsonMappingException

на line mapper.writeValue(wr, content);

Что вызывает это исключение и как его исправить?

+0

это решит вашу проблему !! http://stackoverflow.com/a/33516669/2055782 –

ответ

2

jackson-databind - это общий пакет привязки данных, который работает с реализацией потокового API (jackson-core). Вот почему вам нужно добавить jackson-core и уловить 3 исключения. writeValue метод броски IOException, JsonGenerationException и JsonMappingException.

try { 
    mapper.writeValue(wr, content); 
} catch (JsonMappingException e) { 
    e.printStackTrace(); 
} catch (JsonGenerationException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Надеюсь, это будет полезно для вас.

+0

Как вставить попытку поймать его? Когда я делаю это я получаю несовместимые типы ошибок, в котором говорится следующее: Требуется: java.lang.Throwable Найдено: com.fasterxml.jackson.databind.JsonMappingException –

+0

Спасибо за вашу помощь, но я все еще получаю Несовместимые типы ошибка для «JsonMappingException» –

+0

Добавили ли вы jackson-core? –

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