当前位置: 首页 > 面试题库 >

排球补丁中的错误

酆浩邈
2023-03-14
问题内容

com.android.volley.NoConnectionError:java.net.ProtocolException:未知方法“
PATCH”;必须是[OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE]中的一种

StringRequest putRequest = new StringRequest(Request.Method.PATCH, url,
                 new Response.Listener<String>()
                 {
                     @Override
                     public void onResponse(String response) 
                     {

                         Log.d("Response", response);

                     }
                 },
                 new Response.ErrorListener()
                 {
                      @Override
                      public void onErrorResponse(VolleyError error) 
                      {


                          Log.d("Error.Response", error.toString());

                    }
                 }
             ) {

                 @Override
                 protected Map<String, String> getParams()
                 { 
                         Map<String, String>  params = new HashMap<String, String> (); 
                         params.put("name", "My Name"); 
                         params.put("age", "11");

                         return params; 
                 }

             };

问题答案:

您确定使用的Volley
Library版本正确吗?我刚刚在Lollipop中尝试了您的代码,它工作正常。如果您将Volley库用作外部项目,请检查com.android.volley包中Request类的Method接口。它应该有一个PATCH变量。

public interface Method {
        int DEPRECATED_GET_OR_POST = -1;
        int GET = 0;
        int POST = 1;
        int PUT = 2;
        int DELETE = 3;
        int HEAD = 4;
        int OPTIONS = 5;
        int TRACE = 6;
        int PATCH = 7;
    }

如果不是,请使用最新版本的Volley库。

更新:

您是正确的,它在Kitkat中显示此错误,但在Lollipop中未显示。我猜主要的问题是Java的HTTPUrlConnection不支持PATCH。(我猜它在Lollipop中起作用,因为它使用的是Java
7,而Java 7的HTTPUrlConnection支持PATCH方法?)不管怎样,您可以使用OkHttp库来纠正此问题。okhttp-
urlconnection模块实现java.net.HttpURLConnection

将以下jar添加到您的libs文件夹中:
okhttp-2.2.0.jar

okhttp-urlconnection-2.2.0.jar

okio-1.2.0.jar

创建一个OkHttpStack类:

package com.example.temp;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

import com.android.volley.toolbox.HurlStack;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.OkUrlFactory;

public class OkHttpStack extends HurlStack {
    private final OkUrlFactory mFactory;

    public OkHttpStack() {
        this(new OkHttpClient());
    }

    public OkHttpStack(OkHttpClient client) {
        if (client == null) {
            throw new NullPointerException("Client must not be null.");
        }
        mFactory = new OkUrlFactory(client);
    }

    @Override protected HttpURLConnection createConnection(URL url) throws IOException {
        return mFactory.open(url);
    }
}

使用以下构造函数创建Volley RequestQueue:

Volley.newRequestQueue(getApplicationContext(),new OkHttpStack()).add(putRequest);

现在它正在Kitkat上为我工作。



 类似资料:
  • Git 中的一些命令是以引入的变更即提交这样的概念为中心的,这样一系列的提交,就是一系列的补丁。 这些命令以这样的方式来管理你的分支。 git cherry-pick git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。 在 变基与拣选工作流 一节中描述和演示了

  • 我们有一个属性为的文章资源: 标题 图像 描述: __________ 状态:已发布|草稿 如果我们只想删除图像,我们提出请求 如果我们只想更新状态,我们会提出请求 但在这种情况下,图像也将被删除。 如何在REST中只更新一个属性?

  • 当我尝试点击具有方法的请求时,我收到以下错误:PATCH 使用JMeter版本:-apache-JMeter-5.4.1 如果我能得到专家的帮助来解决他们的问题,那将会很有帮助。 谢谢

  • 向app store发布新的app版本可能需要一些时间。Tabris.js允许直接向你的用户发布热更新,而无需等待app store更新。 为了符合Apple App Store的规则,修补程序必须“[…] not change the primary purpose of the app by providing features or functionality that are incons

  • 问题内容: 猴子如何修补的功能。我正在尝试添加一个从页面发出的每个ajax请求返回时将被调用的函数。 我知道这听起来像一个可怕的主意,但是用例非常特殊。我想将特定的SDK与控制台(jqconsole)一起使用,但在不修改外部SDK的情况下显示控制台内ajax调用的状态和结果。 我看过这篇文章,它提供了很好的信息,但是没有任何关于猴子修补回调的内容,这似乎超出了我的JavaScript技能。 PS无

  • 补丁是一个文本文件,其内容类似于,但与代码一样,它也有关于提交的元数据; 例如提交ID,日期,提交消息等。我们可以从提交创建一个补丁,而其他人可以将它们应用到他们的存储库。 假设我们在项目实现了一个函数。并将编写的代码的路径并发送给其他开发人员。 然后,其他开发人员可以将接收的补丁应用到自己的代码中。 我们使用命令创建最新提交的修补程序。 如果要为特定提交创建修补程序,请在命令后面指定 。 上述命