android– 通过排球投掷错误上传图片.拥有图像数组和文本数组

android– 通过排球投掷错误上传图片.拥有图像数组和文本数组,第1张

概述参见英文答案>GettingNoSuchFieldErrorINSTANCEorg/apache/http/message/BasicHeaderValueParser                                    4个解决方案如下我正在使用凌空库上传图片.条件是我要求发送>key1=字符串值>key2=字符串值>

参见英文答案 > Getting NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser                                    4个
解决方案如下

我正在使用凌空库上传图片.条件是我要求发送

> key1 =字符串值
> key2 =字符串值
> key3 {= file} =图像值,即jpeg,jpg

这是我正在使用的代码(评论部分是我已经尝试过的) –

import com.androID.volley.AuthFailureError;import com.androID.volley.NetworkResponse;import com.androID.volley.Request;import com.androID.volley.Response;import com.androID.volley.VolleyError;import com.androID.volley.VolleyLog;import com.androID.volley.toolBox.httpheaderParser;import <APP_CLASS IGnorE THIS>.Configimport org.apache.http.entity.@R_502_3317@;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 java.io.ByteArrayOutputStream;import java.io.file;import java.io.IOException;import java.io.UnsupportedEnCodingException;import java.nio.charset.Charset;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * Created by Jimit Patel on 26/09/15. */public class MyClass extends Request<String> {    private static final String TAG = MyClass.class.getSimplename();    private static final boolean IS_DEBUG = true;    private static final String file_PART_name = "file";    private multipartentityBuilder multipartentityBuilder;    private Response.Listener<String> mListener;    private Map<String, String> mRequestParams;    private file file;    private String tokenID;    public AdDWardrobeRequest(int method, String url, Response.Listener<String> Listener, Response.ErrorListener errorListener,                              file file, Map<String, String> requestParams, String tokenID) {        super(method, url, errorListener);        mListener = Listener;        this.file = file;        this.tokenID = tokenID;        mRequestParams = requestParams;        buildmultipartentity();    }    @OverrIDe    protected Response<String> parseNetworkResponse(NetworkResponse response) {        return Response.success("Result", getCacheEntry());    }    @OverrIDe    protected voID deliverResponse(String response) {        mListener.onResponse(response);    }    @OverrIDe    public Map<String, String> getheaders() throws AuthFailureError {        Map<String, String> headers = super.getheaders();        if (headers == null                || headers.equals(Collections.emptyMap())) {            headers = new HashMap<>();        }        headers.put(Config.header_AUTHORIZATION, "Bearer " + tokenID);//        headers.put("Accept", "application/Json");//        headers.put("Content-Type", "multipart/form-data");        return headers;    }    @OverrIDe    public String getbody@R_502_3317@() {        String @R_502_3317@header = multipartentityBuilder.build().get@R_502_3317@().getValue();        return @R_502_3317@header;    }    @OverrIDe    public byte[] getbody() throws AuthFailureError {        ByteArrayOutputStream bos = new ByteArrayOutputStream();        try {            multipartentityBuilder.build().writeto(bos);        } catch (IOException e) {            VolleyLog.e("IOException writing to ByteArrayOutputStream bos, building the multipart request.");        }        return bos.toByteArray();    }    private voID buildmultipartentity() {        multipartentityBuilder = multipartentityBuilder.create();        multipartentityBuilder.setMode(httpMultipartMode.broWSER_COMPATIBLE);//        multipartentityBuilder.setLaxMode().setBoundary("xx").setCharset(Charset.forname("UTF-8"));//        try {//            multipartentityBuilder.setCharset(CharsetUtils.get("UTF-8"));//        } catch (UnsupportedEnCodingException e) {//            e.printstacktrace();//        }        multipartentityBuilder.addPart(file_PART_name, new fileBody(file) );        Set<String> keys = mRequestParams.keySet();        for (String key : keys)            multipartentityBuilder.addTextbody(key, mRequestParams.get(key));    }}

以下是我所面临的错误.

Process: com.stylabs.APP.app, PID: 12804java.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.@[email protected](@[email protected]:153)        at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:53)        at org.apache.http.entity.mime.multipartentityBuilder.buildEntity(multipartentityBuilder.java:236)        at org.apache.http.entity.mime.multipartentityBuilder.build(multipartentityBuilder.java:240)        at MyClass.getbody(MyClass.java:90)        at com.androID.volley.toolBox.HurlStack.addBodyIfExists(HurlStack.java:253)        at com.androID.volley.toolBox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227)        at com.androID.volley.toolBox.HurlStack.performRequest(HurlStack.java:107)        at com.androID.volley.toolBox.BasicNetwork.performRequest(BasicNetwork.java:96)        at com.androID.volley.Networkdispatcher.run(Networkdispatcher.java:112)

请帮帮我.先感谢您!!

虽然标记为重复,但我没有在那里找到任何解决方案.我终于揭开了我所遗忘的一切.我重读了androID上的文档,我可以在这里找到它 – http://developer.android.com/preview/behavior-changes.html#behavior-apache-http-client

所以我已经删除了所有那些httpcomponents,其中包括httpcore,httpmime,httpclIEnt等.现在不知道哪些垃圾堆栈的东西都被建议堆栈溢出,所有这些都是正确的,直到昨天但不是M预览.而不是那个添加

androID {   uselibrary 'org.apache.http.legacy'}

之前使用过的请求类更改如下 –

import androID.graphics.Bitmap;    import androID.graphics.BitmapFactory;    import com.androID.volley.AuthFailureError;    import com.androID.volley.NetworkResponse;    import com.androID.volley.Request;    import com.androID.volley.Response;    import com.androID.volley.VolleyError;    import <APP_CLASS IGnorE THIS>.Config    import java.io.ByteArrayinputStream;    import java.io.ByteArrayOutputStream;    import java.io.DataOutputStream;    import java.io.file;    import java.io.IOException;    import java.util.Collections;    import java.util.HashMap;    import java.util.Map;    import java.util.Set;    /**     * Created by Jimit Patel on 26/09/15.     */    public class MyClass extends Request<String> {        private static final String TAG = AdDWardrobeRequest.class.getSimplename();        private static final boolean IS_DEBUG = true;// This is the key for the file to be sent        private static final String file_PART_name = "file";        private Response.Listener<String> mListener;        private Response.ErrorListener mErrorListener;        private Map<String, String> mRequestParams;        private file file;        private String tokenID;        private final String BOUNDARY = "3i2ndDfv2rTHiSisAbouNdArYfORhttpEefj3q2f";        private final String CRLF = "\r\n";        private final int MAX_BUFFER_SIZE = 1024 * 1024;        public MyClass(int method, String url, Response.Listener<String> Listener, Response.ErrorListener errorListener,                                  file file, Map<String, String> requestParams, String tokenID) {            super(method, url, errorListener);            mListener = Listener;            mErrorListener = errorListener;            this.file = file;            this.tokenID = tokenID;            mRequestParams = requestParams        }        @OverrIDe        protected Response<String> parseNetworkResponse(NetworkResponse response) {            return Response.success(new String(response.data), getCacheEntry());        }        @OverrIDe        protected voID deliverResponse(String response) {            mListener.onResponse(response);        }        @OverrIDe        public Map<String, String> getheaders() throws AuthFailureError {            Map<String, String> headers = super.getheaders();            if (headers == null                    || headers.equals(Collections.emptyMap())) {                headers = new HashMap<>();            }            headers.put(Config.header_AUTHORIZATION, "Bearer " + tokenID);            headers.put("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);            return headers;        }        @OverrIDe        protected VolleyError parseNetworkError(VolleyError volleyError) {            return super.parseNetworkError(volleyError);        }        @OverrIDe        public voID deliverError(VolleyError error) {            mErrorListener.onErrorResponse(error);        }        @OverrIDe        public byte[] getbody() throws AuthFailureError {            ByteArrayOutputStream bos = new ByteArrayOutputStream();    DataOutputStream dos = new DataOutputStream(bos);    try {        PrintWriter pw = new PrintWriter(new OutputStreamWriter(dos, "UTF-8"));        Set<String> keys = mRequestParams.keySet();pw.append(CRLF);        for (String key : keys) {            pw.append("--" + BOUNDARY + CRLF);            pw.append("Content-disposition: form-data; ");            pw.append("name=\"" + key + "\"" + CRLF + CRLF + mRequestParams.get(key) + CRLF);        }        pw.append("--" + BOUNDARY + CRLF);        pw.append("Content-disposition: form-data; ");        pw.append("name=\"" + file_PART_name + "\"; filename=\"" + file.getname() + "\"" + CRLF + CRLF);        dos.writeBytes(pw.toString());        pw.flush();        fileinputStream inputStream = new fileinputStream(file);        int bytesAvailable = inputStream.available();        int bufferSize = Math.min(bytesAvailable, MAX_BUFFER_SIZE);        byte[] buffer = new byte[bufferSize];        int bytesRead;        while ((bytesRead = inputStream.read(buffer)) != -1)            dos.write(buffer, 0, bytesRead);        dos.writeBytes(CRLF + "--" + BOUNDARY + "--" + CRLF);    } catch (IOException e) {        e.printstacktrace();    }    return bos.toByteArray();        }    }

最后得到了正确的响应.我希望这能帮助那些和我一样陷入困境的人. 总结

以上是内存溢出为你收集整理的android – 通过排球投掷错误上传图片.拥有图像数组和文本数组全部内容,希望文章能够帮你解决android – 通过排球投掷错误上传图片.拥有图像数组和文本数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存