Я хочу разработать приложение для Android, чтобы получить post.xml с HttpClient. Но он не смог получить контент с 80 портом.
Если я запускаю веб-сервер (здесь WEBrick) с портом 3000, URI будет http://192.168.1.103:3000/posts.xml;
Android-приложение может получить ответ правильной длины, например 568;
Те же веб-файлы, я запустил их с другого сервера (Nignx здесь) с портом 80, URI
"http://192.168.1.103/posts.xml; Android-приложение НЕ может получить контент с длиной, здесь -1.
Этот URI можно правильно открыть в браузере (как на компьютере, так и на эмуляторе Android). Кроме того, ответом является «HTTP / 1.1 200 OK» с responsep.getStatusLine ().
это связано с тем, что «порты сокета ниже 1024 НЕ могут получить доступ в системе, подобной Linux», которая включена
http://groups.google.com/group/android-developers/browse_thread/thread/660123ca64ba1229#
Любой ниндзя может сказать мне, что мне делать, если я могу получить контент с 80 портом?
Ниже приведен мой код.
открытый класс AndroidWorldActivity расширяет Activity {
/ ** Вызывается при первом создании действия. * /
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
retreiveProjects();
}
private void retreiveProjects()
{
HttpClient httpClient = new DefaultHttpClient();
try
{
String url3000 = "http://192.168.1.103:3000/posts.xml";
String url = "http://192.168.1.103/posts.xml";
Log.d( "posts", "performing get " + url3000);
HttpGet httpGet=new HttpGet(url3000);
HttpResponse responsep=httpClient.execute(httpGet);
System.out.println(responsep.getStatusLine());
HttpEntity httpEntity = responsep.getEntity();
int length = ( int ) httpEntity.getContentLength();
// печать длины содержимого
System.out.println("The content length is: "+length);
Log.d( "posts", "The content length is: " + length );