4

RestEasy クライアント フレームワークを使用して REST サービスをテストしたいと考えています。私のアプリケーションでは、基本認証を使用しています。RestEasy のドキュメントによると、org.apache.http.impl.client.DefaultHttpClient認証用の資格情報を設定するために を使用しています。

HTTP-GET リクエストの場合、これは正常に機能します。私は承認されており、必要な結果のレスポンスを取得します。

しかし、リクエストの HTTP-Body に Java オブジェクト (XML) を含む HTTP-Post/HTTP-Put を作成したい場合はどうすればよいでしょうか? を使用しているときに、Java オブジェクトを HTTP-Body に自動的にマーシャリングする方法はありますorg.apache.http.impl.client.DefaultHttpClientか?

認証用のコードは次のとおりです。XML-String を記述したり、InputStream を使用したりせずに、HTTP-Post/HTTP-Put を作成する方法を誰か教えてもらえますか?

@Test
public void testClient() throws Exception {

        DefaultHttpClient client = new DefaultHttpClient();
        client.getCredentialsProvider().setCredentials(
                        new AuthScope(host, port),
                        new UsernamePasswordCredentials(username, password));
        ApacheHttpClient4Executor executer = new ApacheHttpClient4Executor(
                        client);
        ClientRequest request = new ClientRequest(requestUrl, executer);
        request.accept("*/*").pathParameter("param", requestParam);

        // This works fine   
        ClientResponse<MyClass> response = request
                        .get(MyClass.class);
        assertTrue(response.getStatus() == 200);

        // What if i want to make the following instead:
        MyClass myClass = new MyClass();
        myClass.setName("AJKL");
        // TODO Marshall this in the HTTP Body => call method 


}

サーバー側のモックフレームワークを使用して、そこにオブジェクトをマーシャリングして送信する可能性はありますか?

4

1 に答える 1

2

わかりました、それは動作しました、それは私の新しいコードです:

@Test
public void testClient() throws Exception {

    DefaultHttpClient client = new DefaultHttpClient();
    client.getCredentialsProvider().setCredentials(
                    new AuthScope(host, port),
                    new UsernamePasswordCredentials(username, password));
    ApacheHttpClient4Executor executer = new ApacheHttpClient4Executor(
                    client);


    RegisterBuiltin.register(ResteasyProviderFactory.getInstance());

    Employee employee= new Employee();
    employee.setName("AJKL");

    EmployeeResource employeeResource= ProxyFactory.create(
            EmployeeResource.class, restServletUrl, executer);

    Response response  = employeeResource.createEmployee(employee);

}

EmployeeResource:

@Path("/employee")
public interface EmployeeResource {

    @PUT
    @Consumes({"application/json", "application/xml"})
    void createEmployee(Employee employee);

 }
于 2012-10-23T16:45:32.563 に答える