Android异步Http库post错误?
我目前正在使用库发送post/get请求。我以前没有任何问题,但现在我意识到,如果我在没有图像数据的情况下发送这个请求,它会给我超时错误。(如果我通过放置图像数据发送完全相同的请求,则不会出错。) 这是什么原因?Android异步Http库post错误?,android,asynchronous,socket-timeout-exception,android-async-http,Android,Asynchronous,Socket Timeout Exception,Android Async Http,我目前正在使用库发送post/get请求。我以前没有任何问题,但现在我意识到,如果我在没有图像数据的情况下发送这个请求,它会给我超时错误。(如果我通过放置图像数据发送完全相同的请求,则不会出错。) 这是什么原因? 提前感谢。在比较请求和响应后,我发现该案例属于内容类型。有了图像,它就发布了多个部分,而没有图像,它就发布了其他内容 所以我进入了库中的RequestParams类,并进行了这些更改现在它工作正常。对于进一步的问题,我将发布我所做的更改 我放置了一个标志来确定此请求是否应作为多部分发布
提前感谢。在比较请求和响应后,我发现该案例属于内容类型。有了图像,它就发布了多个部分,而没有图像,它就发布了其他内容 所以我进入了库中的RequestParams类,并进行了这些更改现在它工作正常。对于进一步的问题,我将发布我所做的更改 我放置了一个标志来确定此请求是否应作为多部分发布:
private boolean shouldUseMultiPart = false;
我创建了一个构造函数来设置此参数:
public RequestParams(boolean shouldUseMultiPart) {
this.shouldUseMultiPart = shouldUseMultiPart;
init();
}
然后在getEntity()方法上,我应用了以下几行:
/**
* Returns an HttpEntity containing all request parameters
*/
public HttpEntity getEntity() {
HttpEntity entity = null;
if (!fileParams.isEmpty()) {
...
} else {
if (shouldUseMultiPart) {
SimpleMultipartEntity multipartEntity = new SimpleMultipartEntity();
// Add string params
for (ConcurrentHashMap.Entry<String, String> entry : urlParams
.entrySet()) {
multipartEntity.addPart(entry.getKey(), entry.getValue());
}
// Add dupe params
for (ConcurrentHashMap.Entry<String, ArrayList<String>> entry : urlParamsWithArray
.entrySet()) {
ArrayList<String> values = entry.getValue();
for (String value : values) {
multipartEntity.addPart(entry.getKey(), value);
}
}
entity = multipartEntity;
} else {
try {
entity = new UrlEncodedFormEntity(getParamsList(), ENCODING);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return entity;
}
/**
*返回包含所有请求参数的HttpEntity
*/
公共HttpEntity getEntity(){
HttpEntity=null;
如果(!fileParams.isEmpty()){
...
}否则{
如果(应使用多部分){
SimpleMultipartEntity multipartEntity=新SimpleMultipartEntity();
//添加字符串参数
for(ConcurrentHashMap.Entry:urlParams)
.entrySet()){
addPart(entry.getKey(),entry.getValue());
}
//添加重复参数
对于(ConcurrentHashMap.Entry:urlParamsWithArray)
.entrySet()){
ArrayList values=entry.getValue();
for(字符串值:值){
multipartEntity.addPart(entry.getKey(),value);
}
}
实体=多方实体;
}否则{
试一试{
实体=新的UrlEncodedFormEntity(getParamsList(),编码);
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
}
}
返回实体;
}
这可能仅仅是因为您的服务器没有响应吗?但就在这篇文章之后,我放了一张图片,突然服务器开始响应?诺普,别这么想。。。应该还有其他原因。可能是因为图像字段为emptyNoep而导致服务器崩溃,而不是因为这个原因。请检查下面的答案,我已经找到错误并解决了。您如何在服务器端处理您的文件?我正在尝试实现相同的功能,但我无法在服务器上捕获我的映像文件(asp.net)-我看到除文件之外的所有请求参数。。。
/**
* Returns an HttpEntity containing all request parameters
*/
public HttpEntity getEntity() {
HttpEntity entity = null;
if (!fileParams.isEmpty()) {
...
} else {
if (shouldUseMultiPart) {
SimpleMultipartEntity multipartEntity = new SimpleMultipartEntity();
// Add string params
for (ConcurrentHashMap.Entry<String, String> entry : urlParams
.entrySet()) {
multipartEntity.addPart(entry.getKey(), entry.getValue());
}
// Add dupe params
for (ConcurrentHashMap.Entry<String, ArrayList<String>> entry : urlParamsWithArray
.entrySet()) {
ArrayList<String> values = entry.getValue();
for (String value : values) {
multipartEntity.addPart(entry.getKey(), value);
}
}
entity = multipartEntity;
} else {
try {
entity = new UrlEncodedFormEntity(getParamsList(), ENCODING);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return entity;
}