【问题标题】:Communication between my Java Server and Local Client我的 Java 服务器和本地客户端之间的通信
【发布时间】:2012-03-23 19:12:40
【问题描述】:

我一直在编写简单的 Java 服务器。我要将此代码部署到我学生的服务器并在那里运行。

public class Demo {

    public static void main(String[] args) {

        String port = "50000";

        ServerAttributes attr = new ServerAttributes();
        attr.setPort(Integer.parseInt(port));

        Socket socket = null;
        ServerSocket serverSocket= null;

        try {
            serverSocket = new ServerSocket(attr.getPort());
            System.out.println("Waiting for accept...");

            while(true) {
                socket = serverSocket.accept();
                // TODO

                socket.close();
            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

我想创建简单的客户端代码,它将与我的服务器“交谈”。通信客户端->服务器很容易。我的服务器对客户端可见。但是我应该怎么做才能以另一种方式提供沟通?

也许 REST 是个好主意?那么,如何“教”我的服务器回答 REST 查询?

我有一段代码可以将数据发送到我的 GAE 服务器:

package enceladus.server.trash.rest;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class RESTGAEServer {
    static String httpAddress = "http://*********.appspot.com/sign";

    public static void main(String[] args) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(httpAddress);

        try {

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();


            nameValuePairs.add(new BasicNameValuePair("guestbookName", "default"));                     
            nameValuePairs.add(new BasicNameValuePair("content", "TEST"));

            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            @SuppressWarnings("unused")
            HttpResponse response = client.execute(post);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

提前致谢

【问题讨论】:

    标签: java rest client communication


    【解决方案1】:

    如果您尝试从服务器提供 RESTFul 服务,这不是一件容易的事。您可能想要做的是使用 Restlet 之类的东西来引导您的 RESTFul 服务器和客户端。

    更多信息请参考http://wiki.restlet.org/docs_2.0/13-restlet/21-restlet/318-restlet.html

    【讨论】:

      【解决方案2】:

      REST 是一种非常简单的客户端和服务器之间的通信方式。 REST 基本上是说,以应有的方式使用 HTTP,即使在计算机程序之间进行通信时也是如此。

      如果您没有足够的知识,请阅读 HTTP。这是一份很好的文档:http://www.jmarshall.com/easy/http/

      一旦您了解了如何在客户端和服务器上发送和接收 HTTP 消息,您就可以开发 RESTful 服务器 API:s。

      关于 REST,您需要了解的是,它主要是您设计 API 时的一种思维方式。确保充分利用 HTTP 并以任何格式(通常是 JSON、XML 或 UrlEncoded 键/值对)发送/接收数据。

      我会说你自己做这件事比在学习 REST 的同时尝试学习 Restlet 或其他一些大型库要好得多。 REST 和 HTTP 都是简单的东西——一旦你明白“它只是一些往复的文本”。当你完全理解了这些东西后,你就可以看看一些框架了。

      以下是有关 REST 的一些信息: http://rest.elkstein.org/

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多