httpプロトコルベースjavaクライアント

9660 ワード

詳細
1.サーバー側:TTでデータを保存し、サービス側を開く:
cd /home/wlh/tt/tokyotyrant/bin/
./ttserver -host 127.0.0.1 -port 1998 -ulog ulog-1 -sid 1 casket.tch

2.httpプロトコルに基づくクライアント実装コード:
package com.tt.client;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpClientTest {
	//       
	public static final String TTSERVER_HOST = "http://10.236.0.12";
	//      
	public static final int TTSERVER_PORT = 1998;
	/**
         * @date 2011.12.26
         * @Administrator wanglihu
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		HttpRequest hq = new HttpRequest();
                //    ,  put  
		String msg = hq.put("test_key", "test_value", 0, TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//test_valueCreated
		msg = hq.put("test_key","test_value1", 0,TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//Exception in thread "main" java.io.FileNotFoundException: http://10.236.0.12:1998/test_key
                //  key   value  
		msg = hq.get("test_key", TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//test_value
		msg = hq.options(TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//  
		msg = hq.head("test_key", TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//  
		msg = hq.delete("test_key", TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//OK
		msg = hq.get("test_key", TTSERVER_HOST, TTSERVER_PORT);
		System.out.println(msg);//Exception in thread "main" java.io.FileNotFoundException: http://10.236.0.12:1998/test_key
	}

}
final class HttpRequest{
	public final String put(String key,String value,int flag,String host,int port) throws IOException{
		if(flag < 0 || flag > 2){
			flag = 0;
		}
		URL url = new URL(host + ":" + port + "/" +key);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setDoInput(true);
		connection.setDoOutput(true);
		
		connection.setRequestMethod("PUT");//       :GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE,CONNECT
		connection.setRequestProperty("HOST", host + ":" +port);//        
		connection.setRequestProperty("ACCEPT", "*/*");//         (  )
		//PUT header"X-TT-PDMODE",    1( 'tcrdbputkeep'),2( 'tcrdbputcat'),3( 'tcrdbput')
		//POST   header"X-TT-XNAME"  "X-TT-MNAME"    .
		//X-TT-XNAME   "tcrdbext",       ,header"X-TT-XOPTS"  bitwise-or  ,1(   ) 2(   ),
		//    URI    URL    key  ,        value,             。
		//header"X-TT-MOPTS"  bitwise-or  ,1(      ),     "application/x-www-form-urlencoded"          ,
		//              。            "application/x-www.form-url-urlencoded"    
		//PUT header"X-TT-PDMODE",    1( 'tcrdbputkeep'),2( 'tcrdbputcat'),3( 'tcrdbput')
		connection.setRequestProperty("X-TT-PDMODE:", " 2 ");
		//        (  :  )
		connection.setConnectTimeout(30000);
		//           (  :  )
		connection.setReadTimeout(30000);
		
		connection.connect();
		OutputStream outputStream = connection.getOutputStream();
		//              ,            
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream));
		//          ,             
		bw.write(value);
		//       ,             
		bw.flush();
		//     ,  ,                ,                
		//      getInputStream()         http          
		bw.close();
		//connection.getInputStream(),              HTTP          
		BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));//  ,              
		//   connection.getInputStream()     ,  http    ,               。
		//           close()  ,                    。
		//  ,                、     、       、     ,      
		StringBuffer buffer = new StringBuffer(100);
		buffer.append(value);
		String line = null;
		if(br == null){
			System.out.println("result is null!");
		}
		while((line = br.readLine()) != null){
			buffer.append(line);
			buffer.append("\r
"); } br.close(); return buffer.toString(); } public final String get(String key , String host,int port) throws IOException{ URL url = new URL(host + ":" + port + "/" +key); //HttpURLConnection URL ( http) URLConnection HttpURLConnection, // HttpURLConnection , HttpURLConnection API HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // HttpURLConnection , false connection.setDoInput(true); // 1: HttpURLConnection , post , http , true, false connection.setDoOutput(true); // connection.setUseCaches(false); // java ( , , Web java.io.EOFException) connection.setRequestProperty("Content-type", "application/x-java-serialized-object"); // "GET", GET connection.setRequestMethod("GET"); connection.setRequestProperty("HOST", host + ":" +port); connection.setRequestProperty("ACCEPT", "*/*"); // connect connection.connect(); // getInputStream connect( : connect() , connect() ) // , BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuffer buffer = new StringBuffer(100); String line = null; if(br == null){ System.out.println("result is null!"); } while((line = br.readLine()) != null){ buffer.append(line); buffer.append("\r
"); } br.close(); return buffer.toString(); } public final String delete(String key,String host,int port)throws IOException{ URL url = new URL(host + ":" + port + "/" +key); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("DELETE"); connection.setRequestProperty("HOST", host + ":" +port); connection.setRequestProperty("ACCEPT", "*/*"); connection.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuffer buffer = new StringBuffer(100); String line = null; if(br == null){ System.out.println("result is null!"); } while((line = br.readLine()) != null){ buffer.append(line); buffer.append("\r
"); } br.close(); return buffer.toString(); } public final String options(String host,int port)throws IOException{ URL url = new URL(host + ":" + port + "/"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("OPTIONS"); connection.setRequestProperty("HOST", host + ":" +port); connection.setRequestProperty("ACCEPT", "*/*"); connection.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuffer buffer = new StringBuffer(100); String line = null; if(br == null){ System.out.println("result is null!"); } while((line = br.readLine()) != null){ buffer.append(line); buffer.append("\r
"); } br.close(); return buffer.toString(); } public final String head(String key,String host,int port)throws IOException{ URL url = new URL(host + ":" + port + "/" + key); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("OPTIONS"); connection.setRequestProperty("HOST", host + ":" +port); connection.setRequestProperty("ACCEPT", "*/*"); connection.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuffer buffer = new StringBuffer(100); String line = null; if(br == null){ System.out.println("result is null!"); } while((line = br.readLine()) != null){ buffer.append(line); buffer.append("\r
"); } br.close(); return buffer.toString(); } }