0

我正在开发一些应用程序,我想将它们连接到一个 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)。

有人可以帮我吗?

真诚的,丽塔

4

1 回答 1

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";
于 2012-08-16T14:05:28.907 回答