后试图发送一个XML从我的客户端应用程序文件覆盖(在Android)服务器端(IIS 7)。 我没有得到的XML文件的文件名,但只是内容还好吧。
现在我意识到,简单地转移裸XML文件将太多重(之后,当我到达我的几乎所有应用程序的数据同步到服务器)。
- 现在我在追求从我的客户端应用程序发送一个压缩文件到服务器端的。
- XML文件被压缩的完美减少小于原大小的一半大小。 文件正在使用发送HTTP POST
方法直接使用FileEntity
和不使用MultiPart
(即能是一个问题)。
更新2:新增我自己的答案(效果更好:d)。
更新:新增客户端代码。
问题:
-该压缩的文件就会保存在服务器端,但是当我打开它的WinRAR / 7zip的给了我一个错误说unexpected end of archive.
。
我提到了几乎类似的问题 ,但我有一个低手.NET
开发,太多在C#
:(因此不能很好的运用确切的代码的(缺失,未初始化变量等)。另外,线程是像4岁,我有非常低,希望有人会在那里做出回应。
我现有的服务器端代码:
string fileName = "D:\\newZIPfile.zip";
Stream myStream = Request.InputStream;
byte[] message = new byte[myStream.Length];
myStream.Read(message, 0, (int)myStream.Length);
string data = System.Text.Encoding.UTF8.GetString(message);
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
using (StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.UTF8))
{
writer.Write(data);
}
}
我的客户端代码:
File file2send = new File(newzipfile);
String urlString = "http://192.168.1.189/prodataupload/Default.aspx"; // FOR TEST
HttpParams httpParams = new BasicHttpParams();
int some_reasonable_timeout = (int) (30 * DateUtils.SECOND_IN_MILLIS);
HttpConnectionParams.setConnectionTimeout(httpParams, some_reasonable_timeout);
HttpClient client = new DefaultHttpClient(httpParams);
HttpPost post = new HttpPost(urlString);
//System.out.println("SYNC'ing USING METHOD: " + post.getMethod().toString());
try {
//OLD FILE-ENTITY MECHANISM >
FileEntity fEntity = new FileEntity(file2send, "application/zip");
//NEW (v1.5) INPUTSTREAM-ENTITY MECHANISM >
//InputStreamEntity fEntity = new InputStreamEntity(new FileInputStream(newzipfile), -1);
// fEntity.setContentType("application/zip");
post.setEntity(fEntity);
HttpResponse response = client.execute(post);
resEntity = response.getEntity();
res_code = response.getStatusLine().getStatusCode();
final String response_str = EntityUtils.toString(resEntity);
if (resEntity != null) {
Log.i("RESPONSE",response_str);
//...
我怎样才能解决这个问题呢? :(