我正在尝试创建一个Web服务并在Android中使用它。它正在使用GET方法,但我无法调用POST方法。
@Path("/dictionary")
public class DictionaryWebService {
private final static String ID = "id";
private final static String WORD = "palabra";
private final static String DESCRIPTION = "description";
.....
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Word postNewWord(MultivaluedMap<String, String> newWord) {
Word dict;
String id = newWord.getFirst(ID);
String word = newWord.getFirst(WORD);
String description = newWord.getFirst(DESCRIPTION);
dict = new Word(id, word, description);
dictionary.putNewWord(dict);
System.out.println("New Word info: " + dict.toString());
return dict;
}
}
我的Android代码是:
@Override
public void onClick(View arg0) {
System.out.println("onClick!!!");
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://10.0.2.2:8080/DictionaryWebService/rest/dictionary/");
post.setHeader("content-type", "application/json");
//Construimos el objeto cliente en formato JSON
JSONObject dato = new JSONObject();
try {
dato.put("id", txtId.getText().toString());
dato.put("palabra", txtWord.getText().toString());
dato.put("description", txtDescription.getText().toString());
StringEntity entity = new StringEntity(dato.toString());
post.setEntity(entity);
HttpResponse resp = httpClient.execute(post);
String respStr = EntityUtils.toString(resp.getEntity());
System.out.println("OKAY!");
.....
}
});
我不知道但是我无法执行webservice ,,,它没有被调用。怎么了??有人能帮助我吗? onclick方法完成没有任何错误。
谢谢。
答案 0 :(得分:2)
我使用了你的代码,它运行正常吗?我做的唯一改变是我将帖子标题设置为;
post.setHeader("content-type", "application/json; charset=UTF-8");
答案 1 :(得分:1)
我这样做的方式与你的方式有所不同,但我在客户的角度看到了与你的相似的一个例子(Http post with parameters not working)使用了额外的post.setHeader调用:
post.setHeader("Accept", "application/json");
这是您已经进行的post.setHeader调用的补充。
链接中的示例也是一个很好的简短测试,用于检查其他所有内容是否正常工作(完整性检查)。
希望这有帮助。