Pengecualian Jackson yang Tidak Tertangani?

Saya baru mengenal pemrograman Android, dan saya mengikuti tutorial ini untuk membuat Program server GCM. Namun, saya menemukan bug yang membuat frustrasi dan sangat menghargai bantuan apa pun.

Ini adalah kelas POST2GCM saya:

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

Saya telah menyertakan file "jackson-databind-2.5.1.jar" tetapi saya mendapatkan kesalahan:

Pengecualian yang Tidak Tertangani: com.fasterxml.jackson.databind.JsonMappingException

di telepon mapper.writeValue(wr, content);

Apa yang menyebabkan pengecualian ini, dan bagaimana cara memperbaikinya?


person Kurono_Kei    schedule 23.03.2015    source sumber
comment
ini akan menyelesaikan masalahmu!! stackoverflow.com/a/33516669/2055782   -  person mo sean    schedule 04.11.2015


Jawaban (1)


jackson-databind adalah paket pengikatan data umum yang berfungsi pada implementasi API streaming (jackson-core) . Itu sebabnya Anda perlu menambahkan jackson-core dan menangkap 3 pengecualian. writeValue Metode melempar IOException, JsonGenerationException dan JsonMappingException.

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

Semoga bermanfaat bagi anda.

person Arkar Aung    schedule 23.03.2015
comment
Seperti dalam menambahkan coba tangkap di sekitarnya? Ketika saya melakukan itu saya mendapatkan kesalahan jenis yang tidak kompatibel yang mengatakan sebagai berikut: Diperlukan: Java.lang.Throwable Found:com.fasterxml.jackson.databind.JsonMappingException - person Kurono_Kei; 23.03.2015
comment
Terima kasih atas bantuan Anda, tetapi saya masih mendapatkan kesalahan tipe tidak kompatibel untuk JsonMappingException - person Kurono_Kei; 23.03.2015
comment
Sudahkah Anda menambahkan jackson-core ?? - person Arkar Aung; 23.03.2015
comment
Maaf saya baru dalam hal ini, saya hanya tahu cara menambahkan JAR tetapi jackson-core sepertinya sebuah proyek - person Kurono_Kei; 23.03.2015
comment
Tidak, Anda juga dapat menginstal JAR untuk jackson-core. github.com/FasterXML/jackson-core/wiki - person Arkar Aung; 23.03.2015
comment
Tetap!! Terima kasih banyak, kamu adalah pahlawan! - person Kurono_Kei; 23.03.2015