0

我一直在使用球衣创建一个 Rest 客户端。
我收到以下异常:

 com.sun.jersey.api.client.ClientHandlerException: java.lang.IndexOutOfBoundsException:  Index: 0, Size: 0
     at  com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:128)
    at com.sun.jersey.api.client.Client.handle(Client.java:435)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:557)
    at com.sun.jersey.api.client.WebResource.access$300(WebResource.java:69)
    at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:475)

下面是我的休息客户:

public class RestClient {

private WebResource webResource;
private Client client;
private static  String BASE_URI;

public RestClient(String url)
{
    BASE_URI = url;
}

private void connect() {
   com.sun.jersey.api.client.config.ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig();
   client = Client.create(config);
    client.setReadTimeout(50000);
    webResource = client.resource(BASE_URI);
}

private void disconnect() {
    client.destroy();
}

public TResponse topup(TRequest request) {
    TResponse respone=null;
    try{
    System.out.println("::::::::::::::::start");
    this.connect();
    System.out.println("connected to base URL "+BASE_URI);
    ClientResponse clientRequest = webResource.path("/topup").accept(MediaType.APPLICATION_XML).put(ClientResponse.class, request);
    respone = (TopUpResponse)clientRequest.getEntity(TopUpResponse.class);
    this.disconnect();
    }
    catch(Exception e){
        e.printStackTrace();
    }
    System.out.println(":::::::::finish");
    return respone;

}
}

请帮我解决这个异常。提前致谢。

4

2 回答 2

0

你有@XxmlRootElement 注释。请阅读这篇文章了解更多详情

于 2012-09-07T06:20:42.043 回答
0

使用 jersey api 一切似乎都很容易:

获取电话。

客户端客户端 = Client.create();

WebResource webResource = client.resource("http://sample.com/rest_service");

MultivaluedMap queryParams = new MultivaluedMapImpl();
queryParams.add("PARAM1", param1);
queryParams.add("PARAM2", param2);

RESTResult s = webResource.queryParams(queryParams)
                                     //Check the return type of the service
                                     .accept(MediaType.APPLICATION_JSON)
                                     //Put a object with XmlRootElement to map the result
                                     .get(RESTResult .class);

 println(s.status);

 //Also you can return the result in a string
 String s = webResource.queryParams(queryParams).get(String.class);  

REST结果代码

import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class RESTAuthorizationResult
{
    public String status = "";   
    public String message = "";      
}
于 2013-01-18T13:00:48.720 回答