问:
我在做一个 同时传文字和图像的可是我把服务器代码 整死没响应 客户端提示一切正常的很 。有了 boolean isHaveData = ServletFileUpload.isMultipartContent(request);就不行了 就像阻塞了一样。
下面我把客户端和服务器端的代码贴出来。
[Java]
查看源文件 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/** 上传文字加图片 */
public
void
postDataFile(String serverUrl, String fileurl, String data) {
Log.e(
"test"
,
"load"
+ serverUrl);
Log.e(
"test"
,
"load"
+ fileurl);
Log.e(
"test"
,
"load"
+ data);
HttpClient client =
new
DefaultHttpClient();
HttpPost post =
new
HttpPost(serverUrl);
MultipartEntity mpEntity =
new
MultipartEntity();
try
{
File file =
new
File(fileurl);
FileBody fileBody =
new
FileBody(file);
mpEntity.addPart(
"file"
, fileBody);
mpEntity.addPart(
"data"
,
new
StringBody(data, Charset
.forName(org.apache.http.protocol.HTTP.UTF_8)));
post.setEntity(mpEntity);
HttpResponse response = client.execute(post);
if
(response.getStatusLine().getStatusCode() ==
200
) {
String content = EntityUtils.toString(response.getEntity(),
"utf-8"
);
ho.handleEvent(content);
//回调函数
}
Log.e(
"test"
,
"IsOk"
);
}
catch
(Exception e) {
Log.e(
"test"
,
"出错了:"
+e);
}
finally
{
if
(mpEntity !=
null
) {
try
{
mpEntity.consumeContent();
}
catch
(UnsupportedOperationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
client.getConnectionManager().shutdown();
}
}
|
下面是服务器代码:
[Java]
查看源文件 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
public
class
SaveDataFile
extends
HttpServlet {
@SuppressWarnings
(
"unchecked"
)
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
boolean
isHaveData = ServletFileUpload.isMultipartContent(request);
if
(isHaveData) {
FileItemFactory factory =
new
DiskFileItemFactory();
ServletFileUpload upload =
new
ServletFileUpload(factory);
try
{
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while
(iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if
(item.isFormField()) {
// 普通文本信息处理
String paramName = item.getFieldName();
String paramValue = item.getString();
System.out.println(paramName +
":"
+ paramValue);
}
else
{
// 上传文件信息处理
String fileName = item.getName();
byte
[] data = item.get();
String filePath = getServletContext().getRealPath(
"/files"
)
+
"/"
+ fileName;
FileOutputStream fos =
new
FileOutputStream(filePath);
fos.write(data);
fos.close();
}
}
}
catch
(FileUploadException e) {
e.printStackTrace();
}
}
response.getWriter().write(
"isok"
);
}
|
当我注释服务器获取文件的代码 服务器就有响应了 而且客户端也能收到来自服务器的回应。
答:
代码没的错误! 是布置的问题 因为服务器 相关jar文件没部署完毕