gpt4 book ai didi

java - mapper.writeValue() 方法出错

转载 作者:行者123 更新时间:2023-11-30 11:16:24 25 4
gpt4 key购买 nike

我正在开发一个 Java 应用程序作为 Google Cloud Messaging Android 应用程序中的服务器。我一直在关注 tutorial我成功地完成了本教程的其余部分。

我的 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 block ,向方法签名添加异常,添加 catch 子句。我做了所有没有解决问题的建议。

这里会出现什么问题?

最佳答案

您需要将jackson-core-2.4.3.jar 库文件添加到您的项目中。也将它添加到您的 java 构建路径中。

当然...2.4.3是我用的版本,但它应该适用于以前的版本。

关于java - mapper.writeValue() 方法出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com