Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Jersey客户端添加到我的Android应用程序。是否发生非法参数异常?_Java_Android_Jersey_Jax Rs - Fatal编程技术网

Java 将Jersey客户端添加到我的Android应用程序。是否发生非法参数异常?

Java 将Jersey客户端添加到我的Android应用程序。是否发生非法参数异常?,java,android,jersey,jax-rs,Java,Android,Jersey,Jax Rs,我想在我的Android应用程序中使用Jersey客户端。 这是我的客户的代码: private JSONArray getJsonElements(){ ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); WebResource service = client.resource(getBaseURI()); JSONArray jarra

我想在我的Android应用程序中使用Jersey客户端。 这是我的客户的代码:

private JSONArray getJsonElements(){
    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    WebResource service = client.resource(getBaseURI());
    JSONArray jarray = new JSONArray();
     jarray =  service.path("/collection").accept(MediaType.APPLICATION_JSON).get(JSONArray.class);
     Log.v(TAG, jarray.toString());
    return jarray;
}
private static URI getBaseURI() {
    return UriBuilder.fromUri("http://localhost:6577/Example/rest/Example")
            .build();
}
问题来了。当我想要构建应用程序时,它给了我一个非常常见的例外:

java.lang.IllegalArgumentException: already added: Ljavax/ws/rs/core/GenericEntity;...2012-07-07 16:48:32 - SM] Conversion to Dalvik format failed with error 1
我看到了有关此异常的所有问题。可以从BuildPath中删除JAR并更改客户端的选择(或者我可以创建我的客户端),但我不想这样做。
你能给我推荐什么吗?

看看这个链接:

我自己更喜欢使用HTTP客户机使用Jersey将Android应用程序连接到Rest服务,因为它支持HTTP命令,如POST、PUT、DELETE、GET。例如,使用GET命令和JSON格式的传输错误数据:

public class Client {

    private String server;

    public Client(String server) {
        this.server = server;
    }

    private String getBase() {
        return server;
    }

    public String getBaseURI(String str) {
        String result = "";
        try {
            HttpParams httpParameters = new BasicHttpParams();
            int timeoutConnection = 3000;
            HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
            int timeoutSocket = 5000;
            HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
            DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
            HttpGet getRequest = new HttpGet(getBase() + str);
            getRequest.addHeader("accept", "application/json");
            HttpResponse response = httpClient.execute(getRequest);
            result = getResult(response).toString();
            httpClient.getConnectionManager().shutdown();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } 
        return result;
    }



 private StringBuilder getResult(HttpResponse response) throws IllegalStateException, IOException {
            StringBuilder result = new StringBuilder();
            BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())), 1024);
            String output;
            while ((output = br.readLine()) != null) 
                result.append(output);

            return result;      
      }
}
然后在另一个课堂上,你可以轻松地:

Client client = new Client("http://localhost:6577/Example/rest/");
String str = client.getBaseURI("Example");    // Json format

看起来像是jar冲突。可能您的libs目录中有两个具有相同包的jar。请看这个和两个投票最多的答案。就是这个问题。泽西岛的一些罐子有这个等级,还有一个coflict。所以我去掉了其中一个,一切正常。很抱歉回答晚了。很抱歉回答晚了。我想这将是一个更好的选择,不要使用Jersey。还有一个选择-使用Android版本的Restlet,一切正常。谢谢帮助。干杯。在你的解决方案中,我如何传递参数?这只是一个开始的示例。你说的到底是哪个参数?