Java 将Jersey客户端添加到我的Android应用程序。是否发生非法参数异常?
我想在我的Android应用程序中使用Jersey客户端。 这是我的客户的代码: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
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,一切正常。谢谢帮助。干杯。在你的解决方案中,我如何传递参数?这只是一个开始的示例。你说的到底是哪个参数?