当前位置: 首页 > 知识库问答 >
问题:

发送带有url参数的帖子,修改为2

昝欣可
2023-03-14

我想发一个带有改装2的帖子。url有一些参数:

 @Headers({
      "Accept: application/x-www-form-urlencoded;",
      "User-Agent: my-app"
 })
 @FormUrlEncoded
 @POST("server/directory/location.type")
`public Call<POJOStringValue> dataWithUr(@Path("arg1") String arg1, @Path("arg2"), String arg2);         

url如下所示

www.website.com/server/directory/location。type?arg1=value1&arg2=value2

我被要求使用POST请求。值(value1和value2)在运行时是动态的。我使用HttpClient用Xamarin开始了这个项目,现在我正在用Java原生语言重写它。在C#中,我所要做的就是对字符串进行精简,并在一个POST中发送结果字符串。

我尝试使用@path,错误是:

“server/directory/location.type”不包含“{arg1}”。(参数#1)

然后,我尝试使用@query,错误是:

IllegalArgumentException:表单编码的方法必须至少包含一个@字段。

最后,我尝试了@field,但请求从未得到任何响应(我将连接超时设置为5秒)

请帮助我,或者告诉我,如果我不得不别无选择,只能使用GET请求。

((编辑))下面是我的客户端设置html" target="_blank">代码:

private static void setupClient(){
    final OkHttpClient client = new okhttp3.OkHttpClient.Builder()
            .connectTimeout(CONNECTION_TIMEOUT, TimeUnit.SECONDS)
            .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
            .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
            .retryOnConnectionFailure(false)
            .build();


    //define retrofit
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(iXUtils.getUrl_())
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build();

    this.client_ = retrofit.create(RequestInterface.class);
}

get()方法:

public static RequestInterface get(){
    return this.client_;
}

我是这样称呼它的:

 public String callFunctionDB(String arg1,  String arg2){
    setupClient();

    Call<POJOStringValue> call  = get().dataWithUrlString(arg1, arg2);
    try {
        POJOStringValue response = call.execute().body();
        String value = response.getValue();
        int test = 0;
    } catch (IOException e) {
        String value = "it failded";
        e.printStackTrace();
    }
    return "test";
} 

我把test=0放入一个断点,但它从来没有达到那个点。另外,为了避免Android.os.NetworkonMaintHreadException,我在doInbackground中将该方法称为“CallFunctionDB”。

共有1个答案

魏康安
2023-03-14

如果请求表单编码,则修改要求至少有一个表单参数。您已经回答了自己的问题--您使用的是查询参数而不是POST字段,这样就不需要注释了。删除@formurlencoded批注,并将参数更改为@query批注。

 类似资料:
  • 我有下面的代码(谷歌的凌空库)向我的php服务器发送POST请求并获取信息。我没有在php中检查isset($\u POST['id')就尝试了代码,代码运行良好。当我开始检查时,php将跳过if语句并转到else,这意味着代码没有正确发送参数。我怎样才能解决这个问题? 我还尝试了以下代码: 但是我仍然得到同样的结果。

  • 我正在测试一种使用改装库发送图像的方法。在此处的改装文件中:http://square.github.io/retrofit/有一种方法可以使用@MultiPart注释。我正在尝试像文档一样使用,但对我来说仍然不起作用。 我该怎么做? 我在努力。 Web服务php文件 Usario的侦听器 活动 例外 电子/错误:(5200):com。谷歌。格森。JsonSyntaxException:com。谷

  • 问题内容: 根据带有凭据的请求,Firefox仅在以下情况下发送凭据以及跨域帖子: 设置了…但是看来jQuery的Ajax API似乎没有为此提供任何机制。 有什么我想念的吗?我还有其他方法可以做到吗? 问题答案: 功能应该在jQuery 1.5中被破坏。 从jQuery 1.5.1开始,您应该使用xhrFields参数。 文件:http://api.jquery.com/jQuery.ajax/

  • 我有一个api URL:https://orderingspace.com/api/search Body parameter:lat:48.8834553 log:2.3399433 miles:6

  • 单击from-data或x-www-form-urlencoded 然后在键/值字段上传递两个参数。 ANDROID改装设置 原因是我使用了2个API(webapi和wcf)。我的所有其他响应都是对象数组。[{},{}]但在此呼叫中,我收到了以下信息 但我还是无法解析响应。

  • 我试图使用Android Volley库发送JSON Post请求,但我似乎没有得到json的正文,我在我的Web服务器上得到未定义的正文参数。我需要json的参数体是一个单一的对象"name=某些Val } 我也在上面的代码中尝试了这一点,但没有成功: