2012-03-23 109 views
1

我一直在寫容易的Java服務器。我將把這段代碼部署到我的學生服務器並在那裏運行。我的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服務器代碼:提前

回答

2

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(); 
     } 
    } 
} 

謝謝如果你正試圖提供從服務器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/

+1

...這是一個非常好的書REST:http://www.amazon.co.uk/RESTful-Web-Services-Leonard-Richardson/DP/0596529260/REF = sr_1_1?即= UTF8&QID = 1332679295&SR = 8-1 – 2012-03-25 12:41:53

相關問題