2012-03-23 8 views
1

Ich habe easy Java Server geschrieben. Ich werde diesen Code auf den Server meines Schülers verteilen und ihn dort ausführen.Kommunikation zwischen meinem Java Server und lokalem Client

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

    } 

} 

Ich möchte einen einfachen Client-Code erstellen, der mit meinem Server "spricht". Kommunikation Client-> Server ist einfach. Mein Server ist für den Client sichtbar. Aber was sollte ich tun, um die Kommunikation auf andere Weise zu ermöglichen?

Vielleicht ist REST eine gute Idee? Also, wie kann ich meinen Server "lehren", auf REST-Abfragen zu antworten?

ich Stück Code habe, die Daten zu meinem GAE-Server zu senden:

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

Vielen Dank im Voraus

Antwort

2

REST ist eine sehr einfache eine einfache Möglichkeit, zwischen einem Client und einem Server zu kommunizieren. REST sagt grundsätzlich, verwende HTTP so, wie es benutzt werden sollte, auch wenn es zwischen Computerprogrammen kommuniziert.

Lesen Sie auf HTTP, wenn Sie nicht genügend Kenntnisse haben. Hier ist ein gutes Dokument: http://www.jmarshall.com/easy/http/

Sobald Sie verstehen, wie Sie HTTP-Nachrichten auf dem Client und auf dem Server senden und empfangen, sind Sie bereit, RESTful-Server-API zu entwickeln: s.

Was Sie über REST wissen sollten, ist, dass es meistens eine Art zu denken ist, wenn Sie Ihre API entwerfen. Stellen Sie sicher, dass Sie HTTP in vollem Umfang nutzen und Daten in einem beliebigen Format senden/empfangen (normalerweise JSON-, XML- oder UrlEncoded-Schlüssel/Wert-Paare).

Ich würde sagen, Sie sind viel besser dran, dies selbst zu tun, als zu versuchen, Restlet oder eine andere große Bibliothek zu lernen, während Sie gleichzeitig REST lernen. REST und HTTP sind beides einfache Dinge - wenn Sie einmal auf das "es ist nur ein paar Text zurück und viert". Wenn Sie diese Dinge vollständig verstehen, können Sie sich einige Frameworks ansehen.

Hier sind einige Informationen über REST: http://rest.elkstein.org/

+1

... und hier ist ein sehr gutes Buch auf REST: http://www.amazon.co.uk/RESTful-Web-Services-Leonard-Richardson/dp/0596529260/ref = sr_1_1? dh = UTF8 & qid = 1332679295 & sr = 8-1 –

Verwandte Themen