ข้อยกเว้นที่ไม่สามารถจัดการได้ของแจ็คสัน?

ฉันยังใหม่กับการเขียนโปรแกรม Android และฉันได้ติดตามบทแนะนำนี้เพื่อสร้าง โปรแกรมเซิร์ฟเวอร์ GCM อย่างไรก็ตาม ฉันพบข้อผิดพลาดที่น่าหงุดหงิด และขอขอบคุณสำหรับความช่วยเหลือเป็นอย่างยิ่ง

นี่คือคลาส 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();
            }
        }
}

ฉันได้รวมไฟล์ "jackson-databind-2.5.1.jar" แล้ว แต่ฉันได้รับข้อผิดพลาด:

ข้อยกเว้นที่ไม่สามารถจัดการได้: com.fasterxml.jackson.databind.JsonMappingException

ในบรรทัด mapper.writeValue(wr, content);

อะไรเป็นสาเหตุของข้อยกเว้นนี้ และฉันจะแก้ไขได้อย่างไร


person Kurono_Kei    schedule 23.03.2015    source แหล่งที่มา
comment
นี่จะแก้ปัญหาของคุณได้!! stackoverflow.com/a/33516669/2055782   -  person mo sean    schedule 04.11.2015


คำตอบ (1)


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

หวังว่ามันจะเป็นประโยชน์สำหรับคุณ

person Arkar Aung    schedule 23.03.2015
comment
เช่นเดียวกับการเพิ่มลองจับมันดู? เมื่อฉันทำอย่างนั้น ฉันได้รับข้อผิดพลาดประเภทที่เข้ากันไม่ได้ซึ่งมีข้อความต่อไปนี้: Required:java.lang.Throwable Found:com.fasterxml.jackson.databind.JsonMappingException - person Kurono_Kei; 23.03.2015
comment
ขอบคุณสำหรับความช่วยเหลือของคุณ แต่ฉันยังคงได้รับข้อผิดพลาดประเภทที่เข้ากันไม่ได้สำหรับ JsonMappingException - person Kurono_Kei; 23.03.2015
comment
เพิ่มแจ็คสันคอร์แล้วหรือยัง?? - person Arkar Aung; 23.03.2015
comment
ขออภัย ฉันยังใหม่กับสิ่งนี้ ฉันรู้วิธีเพิ่ม JAR เท่านั้น แต่ jackson-core ดูเหมือนเป็นโปรเจ็กต์ - person Kurono_Kei; 23.03.2015
comment
ไม่ คุณยังสามารถติดตั้ง JAR สำหรับ jackson-core ได้ด้วย github.com/FasterXML/jackson-core/wiki - person Arkar Aung; 23.03.2015
comment
ที่ตายตัว!! ขอบคุณมากคุณคือฮีโร่! - person Kurono_Kei; 23.03.2015