2013-10-03 4 views
0

Я устал запускать простой пример андроида с nanoHTTPD. когда я запускаю программу в эмуляторе, она показывает http://xxx.xxx.xxx.xxx:8080. Если я запускаю одну и ту же программу на устройстве, она показывает IP-адрес http://xxx.xxx.xxx.xxx:8080. Я пробовал эти ip в мобильном браузере и в своем веб-браузере. он показывает, что страница не может отображать ошибку. Я следовал этому примеру https://gist.github.com/komamitsu/1893396Проблема с Android NANOHTTPD?

Это мой код.

package com.komamitsu; 

import java.io.IOException; 
import java.util.Map.Entry; 
import java.util.Properties; 

import android.app.Activity; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.os.Handler; 
import android.widget.TextView; 

public class AndroidWebServerActivity extends Activity { 
    private static final int PORT = 8080; 
    private TextView hello; 
    private MyHTTPD server; 
    private Handler handler = new Handler(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    hello = (TextView) findViewById(R.id.hello); 
    } 

    @Override 
    protected void onResume() { 
    super.onResume(); 

    TextView textIpaddr = (TextView) findViewById(R.id.ipaddr); 
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
    int ipAddress = wifiManager.getConnectionInfo().getIpAddress(); 
    final String formatedIpAddress = String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff), 
     (ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff)); 
    textIpaddr.setText("Please access! http://" + formatedIpAddress + ":" + PORT); 

    try { 
     server = new MyHTTPD(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

    @Override 
    protected void onPause() { 
    super.onPause(); 
    if (server != null) 
     server.stop(); 
    } 

    private class MyHTTPD extends NanoHTTPD { 
    public MyHTTPD() throws IOException { 
     super(PORT, null); 
    } 

    @Override 
    public Response serve(String uri, String method, Properties header, Properties parms, Properties files) { 
     final StringBuilder buf = new StringBuilder(); 
     for (Entry<Object, Object> kv : header.entrySet()) 
     buf.append(kv.getKey() + " : " + kv.getValue() + "\n"); 
     handler.post(new Runnable() { 
     @Override 
     public void run() { 
      hello.setText(buf); 
     } 
     }); 

     final String html = "<html><head><head><body><h1>Hello, World</h1></body></html>"; 
     return new NanoHTTPD.Response(HTTP_OK, MIME_HTML, html); 
    } 
    } 
} 

Заранее спасибо. Может ли кто-нибудь сказать мне, какое изменение я должен сделать, чтобы получить правильный результат.

ответ

0

Вам нужно позвонить server.start() на самом деле запустить сервер

0

я думаю, что вы забыли запустить сервер ...

try { 
     server = new MyHTTPD(); 
     server.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }