我有一些代碼可以下載已付費應用幾年的XML文件 - 從來沒有任何麻煩,直到我最近發現這種情況發生在HTC One中。HTC One bug?出現在URLConnection InputStream中的HTTP頭部分
想知道是否有我丟失的東西,或者如果這應該報告某處。
下面是示例代碼,迫使問題:
package com.lutron.davetest;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mainCenterText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainCenterText = (TextView) findViewById(R.id.mainCenterText);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter the IP address");
final EditText edit = new EditText(this);
builder.setView(edit);
builder.setPositiveButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mainCenterText.setText("");
String ip = edit.getText().toString();
new DownloadTask().execute(ip);
}
});
builder.create().show();
}
private class DownloadTask extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
try{
URL url = new URL("http", params[0], 80, "/file.xml");
URLConnection connection = url.openConnection();
InputStream in = new BufferedInputStream(connection.getInputStream());
byte buf[] = new byte[4096];
int len;
while((len = in.read(buf)) != -1) {
final String data = new String(buf, 0, len);
runOnUiThread(new Runnable() {
@Override
public void run() {
mainCenterText.append(data);
}
});
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
什麼情況是,從流您只能獲得該文件的內容讀取時所有其他設備上。
在HTC One之後得到這個,然後將文件內容:
onnection: close
Last-Modified: ???
Content-Type: text/html
這與Android 4.1.2。
有沒有辦法配置URLConnection來避免這種情況?