我正在使用齐射库并在XML中获得响应.我想知道如何使用/ volley库解析响应.谢谢.
我从凌空库中得到了这个错误
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
错误
com.android.volley.ParseError: org.json.JSONException: Value [{"id":"admin","name":"Admin"}] of type org.json.JSONArray cannot be converted to JSONObject
Run Code Online (Sandbox Code Playgroud)
如何以字符串形式接收结果然后我将使用jackson处理它?
我正在寻找一种方法来获取抛出的VolleyError的响应代码.我的ErrorListener看起来像这样:
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
//Get response code here
VolleyLog.e("Error: ", error.toString());
VolleyLog.e("Error: ", error.getLocalizedMessage());
}
};
Run Code Online (Sandbox Code Playgroud)
我发送给我的VolleyLog的2行打印如下:
03-12 10:57:56.932: E/Volley(7147): [1] 1.onErrorResponse: Error:
03-12 10:57:56.932: E/Volley(7147): [1] 1.onErrorResponse: Error:
Run Code Online (Sandbox Code Playgroud)
Volley确实知道回来的原因,因为我也能在VolleyLog中看到以下内容:
03-12 10:57:56.692: E/Volley(7147): [41854] BasicNetwork.performRequest: Unexpected response code 403 for https://*******/Employee/authenticate
03-12 10:57:56.897: E/Volley(7147): [41854] BasicNetwork.performRequest: Unexpected response code 403 for https://*******/Employee/authenticate
03-12 10:57:56.902: W/System.err(7147): com.android.volley.AuthFailureError
03-12 10:57:56.902: W/System.err(7147): at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:143)
03-12 10:57:56.902: W/System.err(7147): at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:105)
Run Code Online (Sandbox Code Playgroud)
所以基本上,我想要的是获得响应代码"403"(禁止).
在我的一个应用程序中,我使用Googlevolley提供的服务器发送请求.
问题:超时和错误对象为空 onErrorResponse(VolleyError error)
到目前为止我尝试了什么:
1)首先我得到了null错误对象,所以使用下面的代码解决了它:
@Override
protected void deliverResponse(String response) {
super.deliverResponse(response);
}
@Override
public void deliverError(VolleyError error) {
super.deliverError(error);
DebugLog.e("deliverResponse", "getNetworkTimeMs : " + error.getNetworkTimeMs());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我得到了timeout当我得到错误对象时发生的事情null.
2)现在的应用是Android和iOS和web,但timeout只针对发生Android.
要求的排球日志:
BasicNetwork.logSlowRequests: HTTP response for request
Run Code Online (Sandbox Code Playgroud)
编辑说明:
在服务器端开发的Web服务对于所有三个实例(Android,Web和iOS)都是相同的.
Timeout 当有太多用户向服务器发出请求时发生.
我已经设定了2分钟的时间,但有时只有30秒的凌空抽射超时.
我有很多答案来改变服务器,但因为它是不可能所以任何其他解决方案请.
我还想补充一点,如果我能获得更多关于何时可以超时的超时的信息?
参考文献我经历过:
HttpClient的,经常超时的-使用-WiFi的是持续的,细带-3G
long_xmlhttprequest_ajax_requests_timeout_on_android
编辑:
我还设置了重试政策如下:
request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48,
0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
而且我也不想在连接超时时重试.
如何才能进行有效的服务调用,以解决问题timeout.
任何帮助都会得到满足.
谢谢.
我目前编码和解码图像到Base64.我通过使用流将图像编码为字符串来克服OOM的初始问题.
我现在的问题是我无法理解如何通过Gson将多个分辨率图像(5620 x 3747 - 4.92MB或3264 x 1836 - 1.35MB)的多个Base64编码字符串添加到JSON对象.目前Gson仅使用来自5312 x 2988 - 4.95 MB映像的2个Base64字符串抛出OOM异常.
我知道android可能只能为每个应用程序节省16/20Mb,因此这种转换必须超过限制.
如何将流中的Base64字符串写入JSON对象,该对象将包含发布到我的服务器所需的特定值?
是否更容易更改我的服务器以接受多部件请求而不是基于JSON的POJO与多个Base64字符串?我目前使用的是Volley,并没有官方的多部分请求以及IO流.
如果是压缩问题,在编码到Base64字符串之前,我应该对图像应用多少压缩?理想情况下,我希望失去任何质量但具有最佳压缩级别.
更多信息
我正在上传多个不同分辨率的图像,因为它是兼容性的测试.例如,我发送的所有图像都是在低分辨率和极高分辨率的设备上拍摄的,因为我的应用依赖于这些图像的功能.我试图证明我的应用程序可以处理任何图像(在某种程度上,主要是在移动设备上捕获的图像).
我知道有些图像可能太大,以至于将它们加载到内存中会导致异常.这是我稍后会尝试处理的.
在某些情况下,将上传的图像可以从1到200.
我正在努力寻找能够很好地扩展的最佳解决方案.
我正在使用凌空从服务器在水平滑动视图中显示图像,但我的图像非常大,这是我得到一个例外的内存不足
以下是我的排球班:
public class Volley{
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
public Volley(Context ctx) {
Log.v("Volley", "Volley onCreate");
mRequestQueue = com.android.volley.toolbox.Volley.newRequestQueue(ctx);
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
final int cacheSize = maxMemory / 8;
ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
LruCache<String, Bitmap> imageCache = new LruCache<String, Bitmap>(cacheSize);
@Override
public void putBitmap(String key, Bitmap value) {
imageCache.put(key, value);
}
@Override
public Bitmap getBitmap(String key) {
return imageCache.get(key);
}
};
mImageLoader = new ImageLoader(mRequestQueue, imageCache);
}
public void clear(Context ctx) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Volley向我的服务器发送DELETE类型请求并向请求添加参数.到目前为止,我还没有这样做.
创建自定义请求并覆盖getParams()方法对我没有帮助,因为不会为DELETE类型请求调用此方法.
如何在Volley中为DELETE请求添加参数?
我正在尝试连接API url ="api adress",它接受两个头类型application/json来响应json和application/xml以在xml中重新定义.我需要使用json参数命中JSON,并且响应也将采用json格式.使用android volley Post请求和JsonObjectRequest设置头使用getHeaders它连接到服务器但getParams设置参数不起作用.
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Constants.BASE_URL + Constants.LOGIN, null, response,
response_error) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Map<String, String> getPostParams()
throws AuthFailureError {
// TODO Auto-generated method stub
Map<String, String> params = new HashMap<String, String>();
params.put("key", "value");
return params;
}
};
// implementation of listeners …Run Code Online (Sandbox Code Playgroud) 我在应用程序中使用Volley库.
在onresponse listener中我需要InputStream作为响应
我怎么得到它?
我正在尝试将以前基于活动的教程转换为片段,但我继续在我的适配器上遇到NullPointerException错误.
本教程基于此,我已经缩减了适配器的构造函数,因为它曾经调用了一个Activity.
这里有一种可能的解决方案,但没有人知道如何处理同样可能的问题.
我想将所有内容转换为工作片段.如果您需要我提供更多信息,请与我们联系.
主要转换类:
public class mainViewController2 extends Fragment {
private static final String TAG = mainViewController2.class.getSimpleName();
private ListView listView;
private FeedListAdapter listAdapter;
private List<FeedItem> feedItems;
private String URL_FEED = "http://api.androidhive.info/feed/feed.json";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.mainviewcontroller2_fragment, container, false);
listView = (ListView) v.findViewById(R.id.list);
feedItems = new ArrayList<FeedItem>();
//where the error shows up?
listAdapter = new FeedListAdapter(feedItems);
listView.setAdapter(listAdapter);
// We first check for cached request
Cache cache = …Run Code Online (Sandbox Code Playgroud) android-volley ×10
android ×9
java ×2
json ×2
base64 ×1
content-type ×1
gson ×1
http ×1
httpclient ×1
httpresponse ×1
image ×1
inputstream ×1
jackson ×1
networking ×1
parameters ×1
post ×1
request ×1
timeout ×1
web ×1