我创建了一个在 Android 设备上运行的简单 Web 服务器,它基本上响应 Hello World,该服务器在 Preview 11 之前可以正常工作。是否有任何重大更改导致它不再工作或者我做错了什么?应用程序在 context.Response.OutputStream.Write(buffer, 0, buffer.Length) 上崩溃;
代码:
public class Activity1 : Activity
{
private HttpListener listener;
protected override void OnCreate( Bundle bundle )
{
base.OnCreate( bundle );
// Set our view from the "main" layout resource
SetContentView( Resource.Layout.Main );
// Get our button from the layout resource,
// and attach an event to it
var button = FindViewById<Button>( Resource.Id.MyButton );
button.Click += button_Click;
}
private void button_Click( object sender, EventArgs e )
{
try
{
if ( !HttpListener.IsSupported )
return;
listener = new HttpListener();
listener.Prefixes.Add( "http://+:8001/" );
listener.Start();
listener.BeginGetContext( HandleRequest, listener );
}
catch ( Exception )
{
throw;
}
}
private void HandleRequest( IAsyncResult result )
{
HttpListenerContext context = listener.EndGetContext( result );
string response = "<html>Hello World</html>";
byte [] buffer = Encoding.UTF8.GetBytes( response );
context.Response.ContentLength64 = buffer.Length;
context.Response.OutputStream.Write( buffer, 0, buffer.Length );
context.Response.OutputStream.Close();
listener.BeginGetContext( HandleRequest, listener );
}
}
日志:
I/ActivityManager(112): 进程 torqsoftware.testwebserver (pid 3044) 已经死亡。
I/WindowManager(112): WIN DEATH: Window{44d15120 torqsoftware.testwebserver/monodroidwebservertest.Activity1 paused=false}
D/Zygote (58):进程 3044 由信号 (4) 终止
V/RenderScript_jni(199):表面创建
V/RenderScript_jni(199):surfaceChanged
I/UsageStats(112):com.android.launcher 意外恢复,而已经在 torqsoftware.testwebserver 中恢复
W/InputManagerService(112):得到 RemoteException 向 pid 3044 uid 10062 发送 setActive(false) 通知
谢谢狮子座