大佬教程收集整理的这篇文章主要介绍了android – Volley库忽略format = feed&type = rss Params,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class SimpleXmlrequest<T> extends request<T> { private static final serializer serializer = new Persister(); private final Class<T> clazz; private final Map<String,String> headers; private final Listener<T> listener; /** * Make http request and return a parsed object from Response * Invokes the other constructor. * * @see SimpleXmlrequest#SimpleXmlrequest(int,String,Class,Map,Listener,ErrorListener) */ public SimpleXmlrequest(int method,String url,Class<T> clazz,Listener<T> listener,ErrorListener errorListener) { this(method,url,clazz,null,listener,errorListener); } /** * Make http request and return a parsed object from XML Response * * @param url URL of the request to make * @param clazz Relevant class object * @param headers Map of request headers * @param listener * @param errorListener * */ public SimpleXmlrequest(int method,Map<String,String> headers,ErrorListener errorListener) { super(method,errorListener); this.clazz = clazz; this.headers = headers; this.listener = listener; } @Override public Map<String,String> getHeaders() throws AuthFailureError { return headers != null ? headers : super.getHeaders(); } @Override protected void deliverResponse(T responsE) { listener.onResponse(responsE); } @Override public String getBodyContentType() { return "application/xml"; } @Override protected Response<T> parseNetworkResponse(NetworkResponse responsE) { try { String data = new String(response.data,httpHeaderParser.parseCharset(response.headers));// The problem here this data is not XML return Response.success(serializer.read(clazz,data),httpHeaderParser.parseCacheHeaders(responsE)); } catch (UnsupportedEncodingException E) { return Response.error(new ParseError(E)); } catch (Exception E) { return Response.error(new VolleyError(e.getmessage())); } } }
此外,我试图使用METHOD.POST与getParams()方法
目标RSS:
<?xml version="1.0" encoding="utf-8"?> <!-- generator="Joomla! - open source Content Management" --> <RSS version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <chAnnel> <title>title</title> <description>Description</description> <link>http://google.com</link> <lastBuildDate>Thu,31 Mar 2016 01:27:12 +0200</lastBuildDate> <generator>Joomla! - open source Content Management</generator> <atom:link rel="self" type="application/RSS+xml" href="http://example.com/example?format=Feed&type=RSS"/> <language>ar-aa</language> <item> <title>Item1</title> <link>http://example.com/example1</link> <guid isPermaLink="true">http://example.com/example1</guid> <description>Description1</description> <author>admin</author> <category>Category1</category> <pubDate>Wed,30 Mar 2016 18:49:37 +0200</pubDate> </item> <item> <title>Item2</title> <link>http://example.com/example2</link> <guid isPermaLink="true">http://example.com/example2</guid> <description>Description2</description> <author>admin</author> <category>Category1</category> <pubDate>Wed,30 Mar 2016 18:49:37 +0200</pubDate> </item> </chAnnel> </RSS>
我正在使用此代码并且它工作正常,但现在不推荐使用httpParams,BasichttpParams,httpconnectionParams,DefaulthttpClient,httpGet,httpResponse和httpentity.
我的工作代码:
StringBuilder chaine = new StringBuilder(""); try { httpParams httpParameters = new BasichttpParams(); // Set the timeout in milliseconds until a connection is established. // The default value is zero,that means the timeout is not used. int timeoutConnection = AppConstants.CONNECTION_TIMEOUT_SEC * 1000; httpconnectionParams.setConnectionTimeout(httpParameters,timeoutConnection); // Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiTing for data. int timeoutSocket = AppConstants.soCKET_TIMEOUT_SEC * 1000; httpconnectionParams.setSoTimeout(httpParameters,timeoutSocket); // request method is GET DefaulthttpClient httpClient = new DefaulthttpClient(httpParameters); httpGet httpGet = new httpGet(url); httpResponse httpResponse = httpClient.execute(httpGet); httpentity httpentity = httpResponse.getEntity(); InputStream inputStream = httpentity.getContent(); BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = rd.readLine()) != null) { chaine.append(linE); } rd.close(); } catch (IOException E) { // wriTing exception to log e.printStackTrace(); }
https://m.almesryoon.com/%d8%af%d9%81%d8%aa%d8%b1-%d8%a3%d8%ad%d9%88%d8%a7%d9%84-%d8%a7%d9%84%d9%88%d8%b7%d9%86?format=Feed&type=RSS&template=mobile
这是日志:
... D/dalvikvm: GC_FOR_ALLOC freed 27K,12% free 6432K/7303K,paused 20ms,@R_187_10586@l 20ms I/OnResponse: <?xml version="1.0" encoding="utf-8"?> <!-- generator="Joomla! - open source Content Management" --> <RSS version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <chAnnel> <title>دفتر أحوال الوطن - المصريون</title> <description>المصريون صحيفة يومية مستقلة تنشر آخر وأهم أخبار مصر والوطن العربى والعالم</description> <link>https://m.almesryoon.com/دفتر-أحوال-الوطن</link> <lastBuildDate>Thu,23 Feb 2017 04:36:51 +0200</lastBuildDate> <generator>Joomla! - open source Content Management</generator> <atom:link rel="self" type="application/RSS+xml" href="https://m.almesryoon.com/دفتر-أحوال-الوطن?format=Feed&type=RSS&template=mobile"/> <language>ar-aa</language> <item> ...
在使用您的服务器URL测试一些示例代码后,我发现它得到了301响应.从您的第一个网址,第二个网址将是(https)
https://almesryoon.com/%D8%AF%D9%81%D8%AA%D8%B1-%D8%A3%D8%AD%D9%88%D8%A7%D9%84-%D8%A7%D9%84%D9%88%D8%B7%D9%86?format=Feed&type=RSS
第三个网址将是:
http://m.almesryoon.com/%d8%af%d9%81%d8%aa%d8%b1-%d8%a3%d8%ad%d9%88%d8%a7%d9%84-%d8%a7%d9%84%d9%88%d8%b7%d9%86?template=mobile
最后的网址是(https):
https://m.almesryoon.com/%d8%af%d9%81%d8%aa%d8%b1-%d8%a3%d8%ad%d9%88%d8%a7%d9%84-%d8%a7%d9%84%d9%88%d8%b7%d9%86?template=mobile
使用此最终URL和下面的示例代码,您将获得200个响应代码.我想你可以用我上面提到的最终网址尝试你的代码.
requestQueue queue = Volley.newrequestQueue(this); String url = "https://m.almesryoon.com/%d8%af%d9%81%d8%aa%d8%b1-%d8%a3%d8%ad%d9%88%d8%a7%d9%84-%d8%a7%d9%84%d9%88%d8%b7%d9%86?template=mobile"; Stringrequest request = new Stringrequest(url,new Response.Listener<String>() { @Override public void onResponse(String responsE) { Log.i("onResponse",responsE); } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("onErrorResponse",error.toString()); } }); queue.add(request);
以上是大佬教程为你收集整理的android – Volley库忽略format = feed&type = rss Params全部内容,希望文章能够帮你解决android – Volley库忽略format = feed&type = rss Params所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。