我试过使用POSTMAN API,但没用Java代码?

我试过使用POSTMAN API,但没用Java代码?,java,android,okhttp,Java,Android,Okhttp,请告诉我stackoverflow的所有问题,但这些问题不适用于我的问题 请让邮递员查看图像请求工作正常 但是,当我尝试从androidcode运行时,它不起作用。 我的示例Android代码在这里 @Override protected String doInBackground(Void... params) { HttpURLConnection urlConnection = null; BufferedReader re

请告诉我stackoverflow的所有问题,但这些问题不适用于我的问题

请让
邮递员查看图像请求工作正常

但是,当我尝试从
android
code运行时,它不起作用。 我的示例Android代码在这里

@Override
        protected String doInBackground(Void... params) {
            HttpURLConnection urlConnection = null;
            BufferedReader reader = null;

            // Will contain the raw JSON response as a string.
            String forecastJsonStr = null;

            try {
                URL url = new URL("sample url");

                String postData = "key1=valu1&key2=valu2";

                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(55000 /* milliseconds */);
                conn.setConnectTimeout(55000 /* milliseconds */);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);
                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os));
                writer.write(postData);

                writer.flush();
                writer.close();
                os.close();

                int responseCode=conn.getResponseCode();

                if (responseCode == HttpsURLConnection.HTTP_OK) {

                    BufferedReader in=new BufferedReader(
                            new InputStreamReader(
                                    conn.getInputStream()));
                    StringBuffer sb = new StringBuffer("");
                    String line="";

                    while((line = in.readLine()) != null) {
                        Log.e("response ",line);
                        sb.append(line);
                        break;
                    }

                    in.close();
                    return sb.toString();

                }
                else {
                    return new String("false : "+responseCode);
                }
            } catch (Exception e) {
                Log.e("PlaceholderFragment", "Error ", e);
                // If the code didn't successfully get the weather data, there's no point in attemping
                // to parse it.
                return null;
            } finally {
                if (urlConnection != null) {
                    urlConnection.disconnect();
                }
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (final IOException e) {

                    }
                }
            }
        }
上面的java代码返回405错误代码。我也从
OkHttp
尝试过。
请提供帮助。

在URL末尾添加“/”会导致重定向,因为您的服务器喜欢以“/”结尾的URL。服务器重定向到的URL完全支持POST,但当客户端根据setRedirecting()调用进行操作时,它正在执行GET请求(cURL使用-L开关执行相同的操作)。修复方法是在URL的末尾添加一个“/”,或者自己从响应中获取位置头,然后手动启动另一个POST请求

这可以在wireshark中观察到。您可以通过尝试使用浏览器对URL执行GET请求来测试该理论,并在URL后附加斜杠。这将导致浏览器获得405。以下是Android的固定代码,该代码使用简单的修复方法,在URL中添加“/”(未准备生产):

阅读更多

请务必让我知道这是否有帮助:)

此外,请尝试使用以下代码:

public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://your URL");

try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("id", "12345"));
    nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi"));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    // Execute HTTP Post Request
    HttpResponse response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
} catch (IOException e) {
    // TODO Auto-generated catch block
}
} 
public void postData(){
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“https://your 网址“);
试一试{
//添加您的数据
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“id”,“12345”);
添加(新的BasicNameValuePair(“stringdata”、“Hi”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
//执行HTTP Post请求
HttpResponse response=httpclient.execute(httppost);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
}捕获(IOE异常){
//TODO自动生成的捕捉块
}
} 

您的API调用正在GET参数中接收数据。所以数据应该和url一起发送,如下所示

            String postData = Uri.encode("key1=valu1&key2=valu2");
            URL url = new URL("sample url"+"?+postData);

在提出问题之前我试过,但不适用于meDid。你试过使用不同的url吗?好吧,就是这样,你的url有问题,另一个url可以很好地使用你的代码,而这个url会产生问题,对吗?你试过调整标题吗?我需要设置任何特殊标题吗?相似内容类型