gpt4 book ai didi

java - Android 上的 ReSTLet 客户端 : can't get off the ground :(

转载 作者:行者123 更新时间:2023-11-29 22:25:21 27 4
gpt4 key购买 nike

我一直在玩 reSTLet,到目前为止我喜欢它 :)

不过,我在让 reSTLet 客户端在 android 模拟器上工作时遇到了一些麻烦。

现在有一个在 JSE 下运行的非常简单的 reSTLet 服务器。它所做的只是通过 GET 方法公开根资源(目前只是一行文本)。我可以使用浏览器以及在控制台中运行的简单 reSTLet 客户端来使用资源。我已经修改了 JSE 客户端的代码以尝试从 Android 模拟器进行连接,但我无法让它工作:

package mypackage;

import android.app.Activity;
import android.os.Bundle;

import android.widget.TextView;

import org.restlet.resource.ClientResource;
import org.restlet.representation.Representation;

public class MyActivity extends Activity {

@Override
public void onCreate( Bundle savedInstanceState ) {

super.onCreate( savedInstanceState );

ClientResource res = new ClientResource( "http://server-ip:8111/" );
Representation rep = res.get();

TextView tv = new TextView( this );
try {
tv.setText( rep.getText() );
} catch ( Exception ex ) {
tv.setText( "Exception: " + ex.getMessage() );
}
setContentView( tv );

}

}

注意事项:

(1) android模拟器内置的浏览器可以连接到web服务并获取文本。

(2) 修改了项目Manifest.xml文件,开启了uses-permission INTERNET。

(3) 以下使用与 android bundle 在一起的 Apache HttpClient 库的客户端工作正常:

package mypackage;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

public class TestActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet( "http://server-ip:8111/" );
ResponseHandler<String> handler = new BasicResponseHandler();

TextView tv = new TextView( this );

try {
String content = client.execute( get, handler );
client.getConnectionManager().shutdown();
setContentView( tv );
tv.setText( content );
} catch ( Exception ex ) {
tv.setText( "Exception: " + ex.getMessage() );
}

}

}

知道我可能做错了什么吗?

提前致谢

迈克。

最佳答案

一种解决方法是手动注册 org.reSTLet.ext.httpclient 扩展以替换内部/默认 HTTP 客户端。请参阅 ReSTLet 用户指南: http://wiki.restlet.org/docs_2.1/13-restlet/275-restlet/266-restlet.html

最近的 ReSTLet 2.1 快照还解决了内部 HTTP 连接器的一个长期存在的问题,该问题可能会导致意外超时。

关于java - Android 上的 ReSTLet 客户端 : can't get off the ground :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com