为什么要请求的工作,但后未在Java servlet为(why get requests are w

2019-10-29 06:13发布

我有一个servlet,我把它从一个GET请求,它的工作原理,很好,但是当我把它用这个POST请求

private static void doPostToMultiPart() throws URISyntaxException,
            ClientProtocolException, IOException {
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost httpPost = new HttpPost(
                "http://localhost:8080/ServletExample1/multipart1");
        HttpResponse response = client.execute(httpPost);
        System.out.println("response code = "
                + response.getStatusLine().getStatusCode());
        String responseString = new BasicResponseHandler()
                .handleResponse(response);
        System.out.println(responseString);
    }

我上了一个异常handleResponse ,那就是:

Exception in thread "main" org.apache.http.client.HttpResponseException: Not Found
    at org.apache.http.impl.client.AbstractResponseHandler.handleResponse(AbstractResponseHandler.java:69)
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:65)
    at com.clients.PostClient1.doPostToMultiPart(PostClient1.java:28)
    at com.clients.PostClient1.main(PostClient1.java:16)

而我打印状态为404

错在哪办pleaes?

注意

我可以给你的servlet代码,它是简单的,但我以为,因为我可以做一个GET请求,因此该servlet工作正常,问题是从我的后客户端请求的可能性较大。

更新

当我这样做

httpPost.addHeader("Content-Type", "multipart/related;");

它的工作原理,但是当我这样做:

httpPost.addHeader("Content-Type", MediaType.TEXT_HTML);

我再次得到了异常。 我想,如果客户端请求一个错误的内容类型返回自定义消息。 请帮助

Answer 1:

(以此为长注释)

我知道它很奇怪,但只是尝试这种方法来发送POST(改如适用)

public static String sendPostV2(String data, String url) throws Exception {

    org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
    org.apache.commons.httpclient.methods.PostMethod method = new org.apache.commons.httpclient.methods.PostMethod(url);
    if(data!=null){
       method.addParameter("data", data);
    }
    client.executeMethod(method);
    method.releaseConnection();
    try{
        return method.getResponseBodyAsString();
    }catch (Exception e){
        return null;
    }
}

我有一个非常类似的问题,我有两个不同的发送POST方法,一个适用于某些服务器,但不是全部,另一个作品otherway左右,第一个是非常相似的代码,而第二个(上面的代码)就是另一种方法来发送POST。



Answer 2:

如果你使用一个发布你的servlet和你的web.xml。 404指所请求的资源没有被发现。 您缺少的doPost?

这意味着, http://localhost:8080/ServletExample1/multipart1是不是由于某种原因,有效的POST URL。 挂上请求的文件(S),让我们看看他们在说什么。



文章来源: why get requests are working, but post are not in the java servlets