我正在开发一些应用程序,我想将它们连接到一个 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 方法工作正常,但我无法向我的网络服务发布帖子。我的服务接口是:
@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 Status 405 - Method Not Allowed -------------------- -------------------------------------------------- ---------- 类型 状态报告消息 Method Not Allowed 描述 指定的 HTTP 方法不允许用于请求的资源(Method Not Allowed)。
有人可以帮我吗?
真诚的,丽塔