我正在开发一些应用程序,我想将它们连接到Restful WebService。为此,我写了这堂课:
public class WebServiceClient {
public void postService() {
HttpClient client = new DefaultHttpClient();
String param1 = "ola\n5\nwww.youtube.com\n1000-01-01_00:00:00.0\n1223";
String url = "http://localhost:8080/pt.Android.Project.WebService/rest/project";
HttpPost post = new HttpPost(url);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("param1", param1));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void getService() {
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(
"http://localhost:8080/pt.Android.Project.WebService/rest/project?id=3");
HttpResponse response = client.execute(request);
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String line = "";
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
getService方法工作正常但我不能发帖到我的webservice。我的服务界面是:
@Path("/project")
public WebService {
TagAccessController ctrl;
public ProjectWebService() {
ctrl = new TagAccessController();
}
@GET
@Produces(MediaType.TEXT_HTML)
public String getTag(@QueryParam("id") String id) {
// int id = 1;
String result = ctrl.getTagContent(id);
if (result != null) {
String[] info = result.split("\\|");
// String [] info = { "funciona","hoje"};
return "<html> " + "<title>" + "Informação" + "</title>"
+ "<body><h1>" + info[1] + "</h1>" + "<p>" + info[0]
+ "</p>" + "<p>" + " Site: " + info[2] + "</p>" + "</body>"
+ "</html> ";
} else {
return "<html> " + "<title>" + "Informação" + "</title>"
+ "<body><h1>" + "Sem dados a apresentar!" + "</body></h1>"
+ "</html> ";
}
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getTagText(@QueryParam("id") String id) {
//int id = 1;
return ctrl.getTagContent(id);
}
@POST
@Path("/create/{param1}")
@Produces(MediaType.TEXT_PLAIN)
public void putTag(@PathParam("param1") String param1{
//System.out.println(param1);
ctrl.saveTag(param1);
}
}
问题是当我尝试仅使用测试类发布帖子时,系统会给我这样的消息:HTTP状态405 - 不允许的方法----------------- -------------------------------------------------- -------------类型状态报告消息方法不允许描述所请求资源不允许使用指定的HTTP方法(方法不允许)。
有人可以帮我这个吗?
此致 丽塔
答案 0 :(得分:0)
如果您在模拟器上运行它,请不要使用localhost:
String url = "http://localhost:8080/pt.Android.Project.WebService/rest/project";
而是尝试:
String url = "http://10.0.2.2/pt.Android.Project.WebService/rest/project";