2014-01-17 57 views
0

我正在使用Netty進行ICAP實施1.0.1.GAmimo icap netty執行客戶端示例代碼要求

但是我無法實現工作解決方案。有沒有人與它合作,並得到了一個工作解決方案?網站http://icap.io/上的文檔鏈接也不起作用。

我的要求是檢查附件中的病毒請求。

任何幫助或正面的將是偉大的! 在此先感謝。

回答

0

以下示例打開ICAP服務器的套接字,爲套接字準備Out流和In流。然後準備一個ICAP頭並將其寫入Out流。來自ICAP服務器的響應將被寫入In流。閱讀並根據需要使用它。 您可以根據您的要求使用RESPMOD,REQMOD而不是OPTIONS。以下代碼返回ICAP服務器提供的選項。

的REQMOD,爲ICAP RESMOD頭可能是

String requestBuffer = 
      "RESPMOD icap://"+serverIP+"/"+icapService+" ICAP/"+VERSION+"\r\n" 
      +"Host: "+serverIP+"\r\n" 
      +"User-Agent: "+USERAGENT+"\r\n" 
      +"Allow: 204\r\n" 
      +"Preview: "+previewSize+"\r\n" 
      +"Encapsulated: res-hdr=0, res-body="+resBody.length()+"\r\n" 
      +"\r\n" 
      +resBody 
      +Integer.toHexString(previewSize) +"\r\n"; 

您可以用上面的標題爲獲得來自ICAP服務器的響應。 您可以將該文件寫入需要發送到ICAP服務器的Out流。

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.Writer; 
import java.net.Socket; 

public class MyTestICAPClient { 

public static void main(String[] args) { 
    Socket socket = null; 
    Writer out = null; 
    BufferedReader in = null; 
    try { 
     socket = new Socket("10.4.255.101", 1344);//ICAP server address/port 

      out = new OutputStreamWriter(socket.getOutputStream(), "ISO-8859-1"); 

      out.write("OPTIONS icap://10.4.255.101/avscan ICAP/1.0" + "\r\n" 
        + "Host: 10.4.253.100"+"\r\n" 
        + "User-Agent: IT-Kartellet ICAP Client/0.9"+"\r\n"//your User-Agent 
        + "Encapsulated: null-body=0\r\n" 
        + "\r\n"); 

      out.write("\r\n"); 
      out.flush(); 
      in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      String line = null; 

      while ((line = in.readLine()) != null) { 
       System.out.println(line); 
      } 
      out.close(); 
      in.close(); 
      socket.close(); 
     }catch(Exception exp){ 
      exp.printStackTrace(); 
     }finally { 
      try { 
       socket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    } 
-1

The ICAP Codec for JBoss Netty可能對您有用,雖然它似乎現在沒有被維護。

+0

感謝您的答覆Trustin。我的要求與提及網站URI的正常ICAP請求有點不同。我的需要是在我的應用程序中打擊ICAP服務器,而不是去ICAPRequest中包裝我的HTTPRequest的特定URI。我已經提供了我的問題的答案。最後讓它工作。 – Arry