ฉันยังใหม่กับการเขียนโปรแกรม 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);
อะไรเป็นสาเหตุของข้อยกเว้นนี้ และฉันจะแก้ไขได้อย่างไร