未找到Android MIME媒体类型应用程序/xml上的Jersey 1.8客户端
我正在为我构建的web服务创建一个简单的Android客户端,以从XML获取列表 但我得到了这个线索:未找到Android MIME媒体类型应用程序/xml上的Jersey 1.8客户端,android,xml,jersey,Android,Xml,Jersey,我正在为我构建的web服务创建一个简单的Android客户端,以从XML获取列表 但我得到了这个线索: 8 16:07:39.272: E/ClientResponse(8460): A message body reader for Java class java.util.List, and Java type java.util.List<xx.xxxx.xxx.xxx.xxxx.xxxx.MessdatenPv>, and MIME media type applicatio
8 16:07:39.272: E/ClientResponse(8460): A message body reader for Java class java.util.List, and Java type java.util.List<xx.xxxx.xxx.xxx.xxxx.xxxx.MessdatenPv>, and MIME media type application/xml was not found
02-18 16:07:39.272: E/ClientResponse(8460): The registered message body readers compatible with the MIME media type are:
02-18 16:07:39.272: E/ClientResponse(8460): */* ->
02-18 16:07:39.272: E/ClientResponse(8460): com.sun.jersey.core.impl.provider.entity.StringProvider
02-18 16:07:39.272: E/ClientResponse(8460): com.sun.jersey.core.impl.provider.entity.ReaderProvider
02-18 16:07:39.272: W/dalvikvm(8460): threadid=16: thread exiting with uncaught exception (group=0x41ed2930)
02-18 16:07:39.272: E/AndroidRuntime(8460): FATAL EXCEPTION: Thread-764
02-18 16:07:39.272: E/AndroidRuntime(8460): com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class java.util.List, and Java type java.util.List<xx.xxxx.xx.xx.xxxx.xxx.MessdatenPv>, and MIME media type application/xml was not found
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:549)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:523)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.sun.jersey.api.client.WebResource.handle(WebResource.java:686)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.sun.jersey.api.client.WebResource.access$300(WebResource.java:74)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:508)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.example.monitor.thread.Login.verifyLogin(Login.java:74)
02-18 16:07:39.272: E/AndroidRuntime(8460): at com.example.monitor.activity.LoginActivity$3.run(LoginActivity.java:152)
02-18 16:07:39.272: E/AndroidRuntime(8460): at java.lang.Thread.run(Thread.java:856)
8 16:07:39.272:E/ClientResponse(8460):未找到Java类Java.util.List、Java类型Java.util.List和MIME媒体类型application/xml的消息体读取器
02-18 16:07:39.272:E/ClientResponse(8460):与MIME媒体类型兼容的已注册邮件正文读取器包括:
02-18 16:07:39.272:E/ClientResponse(8460):*/*->
02-18 16:07:39.272:E/ClientResponse(8460):com.sun.jersey.core.impl.provider.entity.StringProvider
02-18 16:07:39.272:E/ClientResponse(8460):com.sun.jersey.core.impl.provider.entity.ReaderProvider
02-18 16:07:39.272:W/dalvikvm(8460):threadid=16:线程退出时出现未捕获异常(组=0x41ed2930)
02-18 16:07:39.272:E/AndroidRuntime(8460):致命异常:线程764
02-18 16:07:39.272:E/AndroidRuntime(8460):com.sun.jersey.api.client.ClientHandlerException:未找到Java类Java.util.List、Java类型Java.util.List和MIME媒体类型application/xml的消息体读取器
02-18 16:07:39.272:E/AndroidRuntime(8460):位于com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:549)
02-18 16:07:39.272:E/AndroidRuntime(8460):位于com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:523)
02-18 16:07:39.272:E/AndroidRuntime(8460):位于com.sun.jersey.api.client.WebResource.handle(WebResource.java:686)
02-18 16:07:39.272:E/AndroidRuntime(8460):在com.sun.jersey.api.client.WebResource.access$300(WebResource.java:74)
02-18 16:07:39.272:E/AndroidRuntime(8460):位于com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:508)
02-18 16:07:39.272:E/AndroidRuntime(8460):在com.example.monitor.thread.Login.verifyLogin(Login.java:74)
02-18 16:07:39.272:E/AndroidRuntime(8460):在com.example.monitor.activity.LoginActivity$3.run(LoginActivity.java:152)
02-18 16:07:39.272:E/AndroidRuntime(8460):在java.lang.Thread.run(Thread.java:856)处
以下是客户:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource webResource = client.resource(getBaseURI());
List<MessdatenPv> listMessdatenPv = webResource.path("test").path("helloworld/getMessdatenPv").accept(MediaType.APPLICATION_XML).get(new GenericType<List<MessdatenPv>>() {});
ClientConfig config=newdefaultclientconfig();
Client=Client.create(config);
WebResource=client.resource(getBaseURI());
List listMessdatenPv=webResource.path(“test”).path(“helloworld/getMessdatenPv”).accept(MediaType.APPLICATION_XML.get(new GenericType(){});
以及网络服务:
@GET
@Path("/getMessdatenPv")
@Produces(MediaType.APPLICATION_XML)
public List<MessdatenPvCommon> getMessdatenPv() throws Exception {
List<MessdatenPvCommon> messdatenPvList = getMessdaten();
return messdatenPvList;
}
@GET
@路径(“/getMessdatenPv”)
@生成(MediaType.APPLICATION\u XML)
公共列表getMessdatenPv()引发异常{
List messdatenPvList=getMessdaten();
返回messdatenPvList;
}
ServiceFinder$ServiceIteratorProvider
package com.example.monitor.activity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import android.util.Log;
import com.sun.jersey.spi.service.ServiceFinder.ServiceIteratorProvider;
public class AndroidServiceIteratorProvider<T> extends ServiceIteratorProvider<T>
{
private static final String TAG = AndroidServiceIteratorProvider.class.getSimpleName();
private static final String MESSAGE = "Unable to load provider";
private static final HashMap<String, String[]> SERVICES = new HashMap<String, String[]>();
private static final String[] com_sun_jersey_spi_HeaderDelegateProvider = {"com.sun.jersey.core.impl.provider.header.MediaTypeProvider",
"com.sun.jersey.core.impl.provider.header.StringProvider"};
private static final String[] com_sun_jersey_spi_inject_InjectableProvider = {};
private static final String[] javax_ws_rs_ext_MessageBodyReader = {"com.sun.jersey.core.impl.provider.entity.StringProvider",
"com.sun.jersey.core.impl.provider.entity.ReaderProvider"};
private static final String[] javax_ws_rs_ext_MessageBodyWriter = {"com.sun.jersey.core.impl.provider.entity.StringProvider",
"com.sun.jersey.core.impl.provider.entity.ReaderProvider"};
static
{
SERVICES.put("com.sun.jersey.spi.HeaderDelegateProvider", com_sun_jersey_spi_HeaderDelegateProvider);
SERVICES.put("com.sun.jersey.spi.inject.InjectableProvider", com_sun_jersey_spi_inject_InjectableProvider);
SERVICES.put("javax.ws.rs.ext.MessageBodyReader", javax_ws_rs_ext_MessageBodyReader);
SERVICES.put("javax.ws.rs.ext.MessageBodyWriter", javax_ws_rs_ext_MessageBodyWriter);
SERVICES.put("jersey-client-components", new String[] {});
SERVICES.put("com.sun.jersey.client.proxy.ViewProxyProvider", new String[] {});
}
@SuppressWarnings("unchecked")
@Override
public Iterator<Class<T>> createClassIterator(Class<T> service, String serviceName, ClassLoader loader, boolean ignoreOnClassNotFound)
{
String[] classesNames = SERVICES.get(serviceName);
int length = classesNames.length;
ArrayList<Class<T>> classes = new ArrayList<Class<T>>(length);
for (int i = 0; i < length; i++)
{
try
{
classes.add((Class<T>) Class.forName(classesNames[i]));
}
catch (ClassNotFoundException e)
{
Log.v(TAG, MESSAGE, e);
}
}
return classes.iterator();
}
@Override
public Iterator<T> createIterator(Class<T> service, String serviceName, ClassLoader loader, boolean ignoreOnClassNotFound)
{
String[] classesNames = SERVICES.get(serviceName);
int length = classesNames.length;
ArrayList<T> classes = new ArrayList<T>(length);
for (int i = 0; i < length; i++)
{
try
{
classes.add(service.cast(Class.forName(classesNames[i]).newInstance()));
}
catch (IllegalAccessException e)
{
Log.v(TAG, MESSAGE, e);
}
catch (InstantiationException e)
{
Log.v(TAG, MESSAGE, e);
}
catch (ClassNotFoundException e)
{
Log.v(TAG, MESSAGE, e);
}
}
return classes.iterator();
}
}
package com.example.monitor.activity;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Iterator;
导入android.util.Log;
导入com.sun.jersey.spi.service.ServiceFinder.ServiceIteratorProvider;
公共类AndroidServiceIteratorProvider扩展了ServiceIteratorProvider
{
私有静态最终字符串标记=androidServiceInteratorProvider.class.getSimpleName();
私有静态最终字符串消息=“无法加载提供程序”;
private static final HashMap SERVICES=new HashMap();
私有静态最终字符串[]com_sun_jersey_spi_HeaderDelegateProvider={“com.sun.jersey.core.impl.provider.header.MediaTypeProvider”,
“com.sun.jersey.core.impl.provider.header.StringProvider”};
私有静态最终字符串[]com_sun_jersey_spi_injection_InjectableProvider={};
私有静态最终字符串[]javax_ws_rs_ext_MessageBodyReader={“com.sun.jersey.core.impl.provider.entity.StringProvider”,
“com.sun.jersey.core.impl.provider.entity.ReaderProvider”};
私有静态最终字符串[]javax_ws_rs_ext_MessageBodyWriter={“com.sun.jersey.core.impl.provider.entity.StringProvider”,
“com.sun.jersey.core.impl.provider.entity.ReaderProvider”};
静止的
{
SERVICES.put(“com.sun.jersey.spi.HeaderDelegateProvider”,com\u sun\u jersey\u spi\u HeaderDelegateProvider);
SERVICES.put(“com.sun.jersey.spi.inject.InjectableProvider”,com\u sun\u jersey\u spi\u InjectableProvider);
put(“javax.ws.rs.ext.MessageBodyReader”,javax\u ws\u rs\u ext\u MessageBodyReader);
put(“javax.ws.rs.ext.MessageBodyWriter”,javax\u ws\u rs\u ext\u MessageBodyWriter);
put(“jersey客户端组件”,新字符串[]{});
SERVICES.put(“com.sun.jersey.client.proxy.ViewProxyProvider”,新字符串[]{});
}
@抑制警告(“未选中”)
@凌驾
公共迭代器createClassIterator(类服务、字符串服务名、类加载器、布尔ignoreOnClassNotFound)
{
字符串[]classesNames=SERVICES.get(serviceName);
int length=classesNames.length;
ArrayList类=新的ArrayList(长度);
for(int i=0;i