在尝试将 XML文件从我的客户端应用程序(在 Android 上)发送到服务器端(IIS 7)之后。我没有得到 XML 文件的文件名,而只是得到了内容。
现在我意识到,简单地传输裸 XML 文件会非常繁重(当我将几乎所有应用程序的数据同步到服务器之后)。
- 现在我正在追求从我的客户端应用程序发送一个压缩文件到服务器端。
- XML 文件被完美地压缩到原来大小的一半以下。文件正在使用HTTP POST
直接使用FileEntity
而不是使用的方法发送MultiPart
(这可能是一个问题)。
更新 2:添加了我自己的答案(效果更好:D)。
更新:添加了客户端代码。
问题:
- zip 文件保存在服务器端,但是当我打开它时,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);
//...
我该如何解决这个问题?:(