4

我正在尝试在两个 android 设备之间建立基本的粗麻布通信。

发送消息的客户端AsyncTask

public class AsyncHessian extends AsyncTask<String,String,String> {

@Override
protected String doInBackground(String... params) {

    String url = "http://192.168.1.37:8080/test/test";
    try{
        HessianProxyFactory factory = new HessianProxyFactory();
        TService basic = (TService) factory.create(TService.class, url);
        basic.hello();
        Log.i("Hello", "Hessian!");
    }
    catch(Exception e){e.printStackTrace();}
    return "";
}

}

服务端实现接口

public class TServiceImpl extends HessianServlet implements TService{

public static void main(String[] args) throws Exception {
    Server server = new Server(8080);
    Context context = new Context(server, "/", Context.SESSIONS);
    context.addServlet(TServiceImpl.class, "/test");
    server.start();
}

public void hello() {
    System.out.println("Hello Hessian!");
}

}

界面

public interface TService {
public void hello();

}

服务器正在 Android 设备上的码头上运行。消息正在从应用程序发送到服务器。

我很肯定消息会到达目的地,因为当码头停止时,我收到了 ECONNREFUSED 错误。现在,当它打开时,我得到了它的标题。

4

2 回答 2

0

在你的 web.xml 中配置你的 servlet

<servlet>
    <servlet-name>testService</servlet-name>
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    <init-param>
        <param-name>home-class</param-name>
        <param-value>TServiceImpl's full name</param-value>
    </init-param>
    <init-param>
        <param-name>home-api</param-name>
        <param-value>TService's full name</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>testService</servlet-name>
    <url-pattern>/test</url-pattern>
</servlet-mapping>

见:http ://hessian.caucho.com/doc/hessian-overview.xtp#Configurationforstandardweb.xml

于 2016-04-12T13:29:16.603 回答
0

我有同样的问题。这可以是很多东西,但“<”是 HTML 或 XML 消息的开始标记。

可能的原因:

  • 无法访问
  • 页面错误
  • 服务未正确映射到路径。
  • 等等。

我们需要有关程序配置的更多详细信息。

于 2019-08-08T22:36:38.360 回答