2017-09-29 24 views
1

ジャージーwebmethodはjsonを受け取り、jsonを返す、私はgzipエンコーディングでjsonを投稿するクライアントを作成しました。私はそれがjsonをエンコードする正しい方法であるとは考えていません。リクエストボディが本当に圧縮されているかどうかを確認しますか?投稿gzip圧縮jsonジャージーサービス

これはこれはあなたの要求が圧縮されていることを知るためにジャージ

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.client.Entity; 
import javax.ws.rs.core.Response; 
import com.gzip.RGZIP; 
import org.glassfish.jersey.message.GZipEncoder; 
public class rclient { 
public static void main(String[] args){ 
    String REST_URI = 
    "http://localhost:8084/TestGZip/webresources/gzip/getgzip"; 
    Client client = ClientBuilder.newClient(); 
    client.register(GZipEncoder.class); 
    RGZIP rzip = new RGZIP(); 
    rzip.docid = 1234; 
    rzip.docdata = "Working..";   
    Response r = 
      client.target(REST_URI).request(MediaType.APPLICATION_JSON) 
      .post(Entity.entity(rzip, MediaType.APPLICATION_JSON)); 
    System.out.println(r.readEntity(String.class)); 
} 
} 

答えて

0

を消費するクライアントクラスで、サーバーに送信されたContent-Encoding: gzipのようなリクエストヘッダが存在しなければならないジャージーWebMethod属性

@POST 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
@Path("/getgzip") 
public RPGZIP postDocument(RGZIP gzip){   
    RPGZIP _response = new RPGZIP(); 
    _response.rpid = gzip.docid; 
    _response.rpdata = gzip.docdata; 
    return _response; 
} 

ですサーバーがペイロードを解凍する必要があることをサーバーが知るために

コード内で正しいことは正しいですか。

+0

私の同僚は、圧縮されたjsonをジャージ方法に投稿しようとしましたが、ソケットエラーが発生しましたか?彼は圧縮された要求を消費するためにgzip ReaderInterceptorを追加して登録しなければならないと私に伝えましたか? – Siva

+0

あなたは「消費」や読書について話していますか? – Optional

+0

私はnetbeansからのリクエストのヘッダーをチェックしており、上記のコードはコンテンツエンコーディングを設定していません。どのようにコンテンツのエンコーディングを設定するには? – Siva