我有一个servlet,我从get请求中调用它,它工作正常,但是当我使用此帖子请求调用它时
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
我有什么不对的请求?
当我这样做时
httpPost.addHeader("Content-Type", "multipart/related;");
它有效,但当我这样做时:
httpPost.addHeader("Content-Type", MediaType.TEXT_HTML);
我又得到了例外。如果客户端请求错误的内容类型,我想返回自定义消息。请帮忙
答案 0 :(得分:0)
发布您的servlet和您的web.xml(如果您正在使用它)。 404表示找不到所请求的资源。你错过了doPost吗?
这意味着http://localhost:8080/ServletExample1/multipart1
由于某种原因不是有效的POST URL。提出所要求的文件,让我们看看他们说了什么。
答案 1 :(得分:0)
(以此作为长篇评论)
我知道它很奇怪但只是尝试使用此方法发送帖子(适当时更改)
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;
}
}
我有一个非常类似的问题,我有两个不同的发送方法,因为一个适用于某个服务器,但不是全部,另一个适用于其他方面,第一个与您的代码非常相似,第二个(上面的代码) )只是发送邮件的另一种方法。