POST参数不存在

时间:2017-03-11 03:15:32

标签: java apache post

我使用API​​时有点新鲜,我现在已经尝试使用了一些但是出于某种原因我总是收到我使用的每个实现的连接错误。我终于在这里找到了一个有效的POST,但我一直在{"成功":false,"错误":"必需的POST参数' value1'不存在。"}

这是我的代码:

package org.apache.http.examples;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

public class APINew7 {

    public static void main(String[] args) {

        try {

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost postRequest = new HttpPost(
                    "https://website.com");

            StringEntity input = new StringEntity("{\"value1\":\"123\",\"value2\":\"456\"}");

            input.setContentType("application/json");
            postRequest.setEntity(input);

            HttpResponse response = httpClient.execute(postRequest);

            BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            httpClient.getConnectionManager().shutdown();

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

我相当确定问题在于此,但我不确定它有什么问题:

StringEntity input = new StringEntity("{\"value1\":\"123\",\"value2\":\"456\"}");

我已经看到了几种不同的传递数据的方法,但这种实现是唯一成功运行的方法。总而言之,这确实在运行,但参数没有被发现。

感谢您的帮助,谢谢。

编辑: 我可能已经找到了问题所在,但我真的不知道如何解决问题。发送的参数之一是半冒号。我必须发送这个,没有办法解决它。我怎么去发送半结肠?示例:" abc; 123"

1 个答案:

答案 0 :(得分:0)

我设法搞清楚了。使用我使用的方法发送分号不起作用,但是对于可能有相同问题的人,使用LinkedHashMap创建对象并且只使用variable.put(“parameter”,“value”)就可以了。

感谢@ cody123

的建议