标签: multipartentity

Android使用MultipartEntity将图像发布到服务器

我一直在尝试将图像和数据上传到Django服务器.我已经包含apache-mime4j.0.6.jarhttpmime4.0.1.jar库(项目 - >构建路径 - >添加外部jar文件)这里是上传图像的代码.

HttpResponse response = null;
try {
    HttpPost httppost = new HttpPost("http://10.0.2.2:8000/mobile");
    //  HttpPost httppost = new HttpPost("some url");

    MultipartEntity multipartEntity = new MultipartEntity(); //MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
    multipartEntity.addPart("name", new StringBody("nameText"));
    multipartEntity.addPart("place", new StringBody("placeText"));
    multipartEntity.addPart("tag", new StringBody("tagText"));
    //multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
    multipartEntity.addPart("Image", new FileBody(destination));
    httppost.setEntity(multipartEntity);

    httpclient.execute(httppost, new PhotoUploadResponseHandler());

  } catch (Exception e) {
    Log.e( "Error","error");
  } 
Run Code Online (Sandbox Code Playgroud)

错误信息:

Could not find class 'org.apache.http.entity.mime.MultipartEntity'
Run Code Online (Sandbox Code Playgroud)

我尝试手动创建libs文件夹并手动将jar文件包含到/ libs文件夹中.当我这样做它无法编译.

错误:

Conversion to Dalvik format failed …
Run Code Online (Sandbox Code Playgroud)

django android dalvik multipartentity

6
推荐指数
1
解决办法
1万
查看次数

在MultipartEntity中使用FileBody进行UTF-8编码

我想在FileBody中发送文件时设置UTF-8编码,就像在StringBuilder中一样.我是这样做的:

restClient.AddEntity("body", new StringBody(body, Charset.forName("UTF-8")));
Run Code Online (Sandbox Code Playgroud)

如果我发送不同于UTF-8消息编码,它可以正常工作.但如果我喜欢这样:

ContentBody fbody = new FileBody(( File )file, "application/octet-stream","UTF-8");
        restClient.AddEntity("files[]", fbody);
Run Code Online (Sandbox Code Playgroud)

服务器获取的文件名不是UTF-8.我该如何解决?

android multipartentity

5
推荐指数
1
解决办法
6303
查看次数

在Android中使用MultipartEntityBuilder和HTTP Client发布JSON对象和文件的标准方法是什么

我可以使用StringEntity发布json对象

httppost.setEntity(newStringEntity(obj.toString())); HttpResponse response = httpclient.execute(httppost);

但我必须发布一个文件和json数据,我发现很多Answers使用MultipartEntity但它已被弃用,请建议我使用MultipartEntityBuilder的任何教程或示例代码,谢谢
这是我的代码

Thread t = new Thread(new Runnable() {

@Override
public void run() {

JSONObject jsonobject = null;

String requestURL = "URL";

try {

jsonobject = new JSONObject("{\"first\": \"Test\",\"last\": \"User\",\"name\": \"Test 
User\",\"email\": \"tr0121345899@gmail.com\",\"birthdate\": \"1984-01-01\",\"Account\": {\"username\": \"t1r0123425899\",\"password\": \"testuser1234567899\"},\"Address\": {\"postal_code\": \"11230\",\"state_or_province\": \"NY\",\"country\": \"US\"}}");
                } catch (JSONException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }



HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(requestURL);

httppost.addHeader("Content-Type", "application/json");

httppost.addHeader("X-ConsumerApiClient","0f8f0a024d6344e429f5ee96aa66fbfb5c3973b5");

httppost.addHeader("X-ConsumerApiSignature",

                    "qmt8aEAGRQUvldkDnHw8zgn1kRYuXRDwvmo3TpWlCtE=");

MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
                multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

multipartEntity.addPart("file", …
Run Code Online (Sandbox Code Playgroud)

android json http-post multipartentity apache-httpclient-4.x

5
推荐指数
1
解决办法
4835
查看次数

无法通过Volley发送带有边界的多部分文件

我有一个使用标准apache类的客户HTTP调用,但我正在尝试创建一个自定义的Volley类来处理这个问题.这是标准调用的代码:

HttpURLConnection conn = (HttpURLConnection) new URL(strUrl).openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setConnectTimeout(30000);
conn.setUseCaches(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Token " + m_apiKey);
conn.setRequestProperty("Accept", "text/plain , application/json");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + strBoundary);
conn.connect();


// **** Start content wrapper:
DataOutputStream request = new DataOutputStream(conn.getOutputStream());

request.writeBytes("\r\n--" + strBoundary + "\r\n");
request.writeBytes("Content-Disposition: form-data; name=\"" + attachmentName + "\";filename=\"" + imageFileName + "\"" + "\r\n");
request.writeBytes("Content-Type: image/jpeg " + "\r\n");
request.writeBytes("\r\n");
request.write(baos.toByteArray());

// **** End content wrapper:
request.writeBytes("\r\n--"+ strBoundary + "--\r\n");

// Flush output buffer:
request.flush();request.close();
Run Code Online (Sandbox Code Playgroud)

不知道怎么做其余的但这是我对Volley的工作不起作用.我之前已经完成了Multipart,但没有使用边界和这种奇怪的格式.

public class …

android multipartform-data boundary multipartentity android-volley

5
推荐指数
1
解决办法
1万
查看次数

没有 Lorg/apache/http/message/BasicHeaderValueFormatter 类型的静态字段 INSTANCE

我收到以下错误:

Process: com.project.publiko, PID: 27061
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueFormatter; in class Lorg/apache/http/message/BasicHeaderValueFormatter; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueFormatter' appears in /system/framework/ext.jar)
    at org.apache.http.entity.ContentType.toString(ContentType.java:153)
    at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:56)
    at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:236)
    at org.apache.http.entity.mime.MultipartEntity.getEntity(MultipartEntity.java:119)
    at org.apache.http.entity.mime.MultipartEntity.writeTo(MultipartEntity.java:180)
    at com.project.publiko.CustomMultipartRequest.getBody(CustomMultipartRequest.java:57)
    at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:236)
    at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:210)
    at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106)
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:110)
Run Code Online (Sandbox Code Playgroud)

参考错误行(Gradle):

android {
    useLibrary  'org.apache.http.legacy'
}
Run Code Online (Sandbox Code Playgroud)
Process: com.project.publiko, PID: 27061
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueFormatter; in class Lorg/apache/http/message/BasicHeaderValueFormatter; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueFormatter' appears in /system/framework/ext.jar)
    at org.apache.http.entity.ContentType.toString(ContentType.java:153)
    at …
Run Code Online (Sandbox Code Playgroud)

apache android httpclient multipartentity android-volley

5
推荐指数
1
解决办法
7300
查看次数

位图到 MultiPartEntity 使用改造

在我开始之前,我看到了很多关于此的问题,但对我来说没有任何作用,也许有人可以向我解释或显示它如何将位图压缩为 MultiPart 实体,然后使用 Retrofit 将其正确发送到服务器

android bitmap multipartentity retrofit2

5
推荐指数
1
解决办法
2978
查看次数

编辑MultiPartEntity的标题

我在我的Android应用程序中发布了一个XML +图像帖子,MultiPartEntity并且除了我发布的服务器要求我Content-Type将HTTP帖子设置为application/soap+xml; charset="utf-8"

那么如何从中改变它......

POST / HTTP/1.1
Host: 192.168.0.193:1234
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Content-Type: multipart/form-data; boundary=XR43mUmjvTb58T7crHhgj83C84qmZO_9k0-s
Content-Length: 28150
Connection: Keep-Alive

--XR43mUmjvTb58T7crHhgj83C84qmZO_9k0-s
...
Run Code Online (Sandbox Code Playgroud)

对此

POST / HTTP/1.1
Host: 192.168.0.193:1234
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: 28150
Connection: Keep-Alive

--XR43mUmjvTb58T7crHhgj83C84qmZO_9k0-s
...
Run Code Online (Sandbox Code Playgroud)

这可能不是发布它的正确方法,但我必须,而不是它将起作用.

java android multipartform-data httprequest multipartentity

4
推荐指数
1
解决办法
5590
查看次数

如何在MultipartEntity中传递字符串变量?

我正在传递3张图片MultipartEntity.这很好用,但我不知道如何传递一个StringMultipartEntity.以下是我的代码:

public void executeMultipartPost(Bitmap bm, int i) throws Exception {
    try {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bm.compress(CompressFormat.JPEG, 75, bos);
        byte[] data = bos.toByteArray();
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost("http://www.3dsoles.com/droidapp/index.php");

        ByteArrayBody bab = new ByteArrayBody(data, "image" + i + ".jpg");
        // File file= new File("/mnt/sdcard/forest.png");
        // FileBody bin = new FileBody(file);
        MultipartEntity reqEntity = new MultipartEntity(
        HttpMultipartMode.BROWSER_COMPATIBLE);
        reqEntity.addPart("file", bab);
        // reqEntity.addPart("userID", Constants.mUserImei);
        reqEntity.addPart("photoCaption", new StringBody("sfsdfsdf"));
        postRequest.setEntity(reqEntity);
        HttpResponse response = httpClient.execute(postRequest); …
Run Code Online (Sandbox Code Playgroud)

android httpclient http-post image-uploading multipartentity

4
推荐指数
1
解决办法
1万
查看次数

如何在Android中的原始文件夹中打开文件

我在MultipartEntity中使用,我正在尝试引用raw文件夹中的文件.这是代码:

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart(new FormBodyPart("file", new FileBody(new File("test.txt"))));
Run Code Online (Sandbox Code Playgroud)

test.txt文件位于我的res/raw文件夹中.当我执行代码时,我得到以下异常:FileNotFoundException:/test.txt:open failed:ENOENT(没有这样的文件或目录)

谁能帮我这个?

android file-upload multipartentity

4
推荐指数
1
解决办法
2万
查看次数

实体在MultiPartEntityBuilder中返回错误

我尝试过以下链接,但没有一个帮助解决问题.

在Android中使用MultipartEntityBuilder时,HttpPost返回错误

/sf/answers/1596220461/

这是代码

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Utility.AddProductWS);

MultipartEntityBuilder multipartBuilder = MultipartEntityBuilder.create();

/* example for setting a HttpMultipartMode */
multipartBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

for (int i = 0; i < photos.size(); i++) {

    multipartBuilder.addBinaryBody("images[]", newFile(photos.get(i).getImagePath());
}

multipartBuilder.addTextBody("username", username.toString());
multipartBuilder.addTextBody("accept_best_offer", String.valueOf(acceptOffer.isChecked() ? 1 : 0));
multipartBuilder.addTextBody("accept_trade", String.valueOf(acceptTrade.isChecked() ? 1 : 0));
multipartBuilder.addTextBody("product_price", etProductPrice.getText().toString());
multipartBuilder.addTextBody("product_description", etProductDescription.getText().toString());

HttpEntity httpEntity = multipartBuilder.build();
httpPost.setEntity(httpEntity);  // Error line
HttpResponse response = httpClient.execute(httpPost);
Utility.showLog(TAG, EntityUtils.toString(response.getEntity()));
Run Code Online (Sandbox Code Playgroud)

错误

引起:java.lang.NoSuchFieldError:没有静态字段INSTANCE类型为Lorg/apache/http/message/BasicHeaderValueFormatter; 在类Lorg/apache/http/message/BasicHeaderValueFormatter中; 或其超类('org.apache.http.message.BasicHeaderValueFormatter'的声明出现在/system/framework/ext.jar中)

我正在使用httpcore-4.4.1httpmime-4.4.1库文件.

android android-asynctask multipartentity

4
推荐指数
1
解决办法
4872
查看次数