这不是一个真正的问题,但是,我想在这里分享一些我的工作代码供您参考.
据我们所知,HttpEntityAPI22已弃用,自API23以来已完全删除.目前,我们无法再访问Android Developer上的HttpEntity Reference(404).因此,以下是我使用Volley和没有HttpEntity的POST多部分请求的工作示例代码.它正在运行,经过测试Asp.Net Web API.当然,代码可能只是发布两个现有可绘制文件的基本示例,也不是所有情况下的最佳解决方案,也不是很好的调优.
MultipartActivity.java:
package com.example.multipartvolley;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.android.volley.NetworkResponse;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class MultipartActivity extends Activity {
private final Context context = this;
private final String twoHyphens = "--";
private final String lineEnd = "\r\n";
private final String boundary = …Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些我认为相对简单的事情:使用Android SDK将图像上传到服务器.我找到了很多示例代码:
http://linklens.blogspot.com/2009/06/android-multipart-upload.html
但是对我来说都不起作用.我一直遇到的困惑是制作多部分请求真正需要的东西.Android的多部分上传(带图片)的最简单方法是什么?
任何帮助或建议将不胜感激!
我正在使用Volley为我的应用程序调用Web请求.但是,因为我是第一次排球.我只是想知道如何使用multipart通过凌空上传图像/视频媒体数据.
我搜索了很多网站,我得到了一些结果
如何使用Volley在Android中发送"multipart/form-data"POST
但是,这些方法看起来不好或有效.那么,请帮助我如何使用凌空上传媒体数据.或者我不应该使用Volley,应该采用以前的手动方法
无论如何,所有的想法和答案都非常感激.谢谢您的帮助.
我已经有一个Request子类用于http发送到服务器.问题是,我不知道如何为文件添加参数.将字符串发布到服务器很容易.但我需要将文件添加为不同的参数.我该怎么做?
public class AddNewPetRequest extends Request<JSONObject> {
private Response.Listener<JSONObject> listener;
public AddNewPetRequest(String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) {
super(Request.Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
public AddNewPetRequest(int method, String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new …Run Code Online (Sandbox Code Playgroud) 我目前编码和解码图像到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.
我正在努力寻找能够很好地扩展的最佳解决方案.
在httpPost中我们setEntity(new StringEntity).但我现在正在使用凌空抽射.我想在排球中使用那个setEntity方法.我怎样才能做到这一点?
我想像Twitter api一样使用它;
HttpPost httpPost = new HttpPost(TwitterTokenURL);
httpPost.setHeader("Authorization", "Basic " + base64Encoded);
httpPost.setHeader("Content-Type", "application/x-www-form- urlencoded;charset=UTF-8");
httpPost.setEntity(new StringEntity("grant_type=client_credentials"));
Run Code Online (Sandbox Code Playgroud) 我有一个图像,我想使用 Volley 库将这个图像上传到我的网络服务,问题是我正在寻找如何去做但仍然没有找到。
我找到了这个,但对我不起作用:http : //develop-for-android.blogspot.com.br/2014/01/using-volley-in-your-application.html
我怎样才能做到这一点 ?
我正在尝试这个。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
fotoPerfil = cursor.getString(columnIndex);
cursor.close();
ImageView imageView = (ImageView) findViewById(R.id.imgView);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
UploadoImageToServer upload = new UploadoImageToServer();
ApplicationController app = new …Run Code Online (Sandbox Code Playgroud) 我正在使用Volley进行API调用.我需要将图像发布到我的服务器上.
我尝试了很多MultipartRequest实现,无效.
我刚尝试使用如何通过AZ_ 在Android中使用Volley发送"multipart/form-data"POST中的示例.
但我得到MultipartRequest.getBody:IOException写入ByteArrayOutputStream错误.
你可以帮我解决我的代码,或者知道使用Volley上传图像的任何完整示例.谢谢.
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.util.CharsetUtils;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyLog;
//Code by:
//https://stackoverflow.com/questions/16797468/how-to-send-a-multipart-form-data-post-in-android-with-volley
//AZ_
//
/**
* Problems : E/Volley? [17225] MultipartRequest.getBody: IOException writing to ByteArrayOutputStream
*/
public class MultipartRequest extends Request<String> {
MultipartEntityBuilder entity = MultipartEntityBuilder.create();
HttpEntity httpentity;
private String FILE_PART_NAME = …Run Code Online (Sandbox Code Playgroud) 嘿伙计们!
我有一个jpg image stored on my device我想要sent it to server(mywebsite.com/api.php)。我想使用volley library它是因为它是由 google 的官方 android 开发人员制作的,我认为他们会尽快将它添加到 sdk 中。
现在我正在使用以下代码将字符串发送到服务器:
postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// code here for response
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// code here for error response
}
}
) {
@Override
protected Map<String, String> getParams() {
Map<String, …Run Code Online (Sandbox Code Playgroud) 我看过以下帖子: 使用Volley和没有HttpEntity工作POST多部分请求
我的问题是如何包含进度条.
进度条有解决方案,但它们都使用HttpClient,我想避免使用它,因为它已被弃用.
我只是无法弄清楚如何将两者结合起来.
编辑:
我正在寻找一个显示百分比的进度条而不仅仅是一个连续的圆圈.我想要一个带有我想要的栏的例子出现在这里,但是正在使用HTTPClient: 如何使用Volley在Android中发送"multipart/form-data"POST
我有一个POST方法API,它在Postman中提供了200个响应代码,但在使用Volley甚至在Retrofit2中调用api时却没有.
这是邮差截图:
这是我为Volley库代码所做的:
final String url = "http://xxxxxxxx.com/api/mobile/user/post/";
StringRequest stringReq = new StringRequest(Request.Method.POST, url,
new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("onResponse ===", response + " " );
}
},
new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("onErrorResponse ===", error + " " );
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Authorization", "xxxxxxxxxxxxx");
return params;
}
@Override
public …Run Code Online (Sandbox Code Playgroud) JsonParse.Java试图从URL获取json数组对象,但它抛出了Parsing ERROR,
而CountriedBean是我的POJO类.
parse_json只有ListView,而parse_json_view有4个TextView
任何人都可以帮助我................
private List<CountriesBean> cntries= new ArrayList<CountriesBean>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.parse_json);
RequestQueue queues = Volley.newRequestQueue(JsonParse.this);
JsonObjectRequest myRequest = new JsonObjectRequest(Request.Method.GET,
"https://github.com/SaiNitesh/REST-Web-services/blob/master/RESTfulWS/json_file.json",
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
Log.i("myCountries**", "response:" +response);
JSONArray countryItems = response.getJSONArray("countryItems");
Log.i("myTagx", "response:" +countryItems);
for(int i=0; i<countryItems.length();i++){
JSONObject temp= countryItems.getJSONObject(i);
String nm = temp.getString("nm");
String cty = temp.getString("cty");
String hse = temp.getString("hse");
String yrs = temp.getString("yrs");
cntries.add(new CountriesBean(nm, cty, hse, yrs));
}
} catch(JSONException e){ …Run Code Online (Sandbox Code Playgroud) android ×12
android-volley ×11
http ×2
java ×2
json ×2
android-json ×1
apache ×1
base64 ×1
file ×1
gson ×1
http-post ×1
httpentity ×1
httprequest ×1
image ×1
jpeg ×1
performance ×1
retrofit2 ×1