Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 通过排球投掷错误上传图片.拥有图像数组和文本数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > 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>.Config

import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.httpR_555_11845@ultipartMode;
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 getBodyContentType() {
        String contentTypeHeader = multipartentityBuilder.build().getContentType().getValue();
        return contentTypeHeader;
    }

    @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(httpR_555_11845@ultipartMode.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: 12804
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: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,httpR_555_11845@ime,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 tokenId) {
            super(method,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,bytesRead);

        dos.writeBytes(CRLF + "--" + BOUNDARY + "--" + CRLF);
    } catch (IOException E) {
        e.printStackTrace();
    }
    return bos.toByteArray();
        }
    }

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

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。