开发者社区> 问答> 正文

在android中模拟表单上传数据?报错

    本人最近在安卓端开发与后台链接的代码,但是我发现在安卓中没有提供上传表单的方式。于是我上网了解了一下,了解到可以应用一种向后台写入的特殊格式可以达到上传表单的效果。可惜的是调试未成功,让人纠结的是程序没有报错。现在贴出代码,希望大家帮一下忙。

这是网页的代码:



<form action="/home/add" method="post" enctype="multipart/form-data">
						<table>
							<tr>
								<td>标题:</td>
								<td>
								<input type="text" name="title"/>
								</td>
							</tr>
							<tr>
								<td>body:</td>
								<td>								<textarea style="height: 150px;width:300px;resize: none" name="body" ></textarea></td>
							</tr>
							<tr>
								<td>文件</td>
								<td>
								<input type="file" name="img"/>
								</td>
							</tr>
							<tr>
								<td></td>
								<td>
								<input type="submit" class="btn btn-primary" value="提交"/>
								</td>
							</tr>
						</table>
					</form>                            

这是android里面的代码:

final String BOUNDARY="===================";
		final String HYPHENS="--";
		final String CRLF="\r\n";
		
		URL url=new URL(UPLOAD_ONE_RES);
		HttpURLConnection connect=(HttpURLConnection)url.openConnection();
		connect.setRequestMethod("POST");
		connect.setDoOutput(true);
		connect.setDoInput(true);
		connect.setUseCaches(false);
		
		connect.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
		DataOutputStream dataOut=new DataOutputStream(connect.getOutputStream());
		dataOut.writeBytes(HYPHENS+BOUNDARY+CRLF);
		//写图片
		String strContentDisposition="Content-Disposition: form-data; name=\"img\"; filename=\""+imgName+".jpg"+"\"";
		String strContentType="Content-Type: image/jpeg";
		
		dataOut.writeBytes(strContentDisposition+CRLF);
		dataOut.writeBytes(strContentType+CRLF);
		dataOut.writeBytes(CRLF);
		
		FileInputStream fileInput=new FileInputStream(imgFile);
		byte[] data=new byte[fileInput.available()];
		fileInput.read(data);
		dataOut.write(data);
		dataOut.writeBytes(CRLF);
		dataOut.writeBytes(HYPHENS+BOUNDARY+CRLF);
		fileInput.close();
		//title
		String strContentDisposition_title="Content-Disposition: form-data; name=\"title\"";
		String strContentType_title="Content-Type: text";
		dataOut.writeBytes(strContentDisposition_title+CRLF);
		dataOut.writeBytes(strContentType_title+CRLF);
		dataOut.writeBytes(CRLF);
		
		dataOut.writeBytes(title);
		dataOut.writeBytes(CRLF);
		dataOut.writeBytes(HYPHENS+BOUNDARY+CRLF);
		//body
		String strContentDisposition_body="Content-Disposition: form-data; name=\"body\"";
		String strContentType_body="Content-Type: text";
		dataOut.writeBytes(strContentDisposition_body+CRLF);
		dataOut.writeBytes(strContentType_body+CRLF);
		dataOut.writeBytes(CRLF);
		
		dataOut.writeBytes(content);
		dataOut.writeBytes(CRLF);
		dataOut.writeBytes(HYPHENS+BOUNDARY+CRLF);
		//读写结束
		dataOut.flush();
		dataOut.close();
程序运行的时候没有报错,但是数据并没有上传到后台中去。

展开
收起
爱吃鱼的程序员 2020-06-22 14:24:40 533 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    apachehttpclient很好用,android默认就有。要是想上传文件,加个mime包就ok

    用HttpPost多好

    可以啊,用HttpEntity类。用HttpPost可以达到上传表单的效果么?

    2020-06-22 14:24:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载