0

POSTリクエストを送信しようとしましたが、WebサーバーはPOST値を追加しなかったことを返します。私はこの問題を解決するために多くの時間を費やしましたが、結果はありませんでした。コードは次のとおりです。

    public static String post(String url, String postParams)
{
    URLConnection connection = null;
    try
    {
        connection = initializeConnection(url);
        connection.setDoOutput(true);
        ((HttpURLConnection) connection).setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "text/xml");
        connection.setRequestProperty("Accept", "text/xml");
        connection.setUseCaches(false);
        connection.setDoInput(true);
        DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
        wr.write(postParams.getBytes());

        wr.flush();
        wr.close();

        // Get Response
        InputStream is = connection.getInputStream();
        return inputStreamToString(is);
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return null;

    }
}

protected static HttpURLConnection initializeConnection(String stringUrl)
{
    HttpURLConnection connection;
    URL url = null;
    try
    {
        url = new URL(stringUrl);
    }
    catch (MalformedURLException e1)
    {
        e1.printStackTrace();
    }
    try
    {
        connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(5000);
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return null;
    }

    return connection;
}

public static String inputStreamToString(InputStream is)
{
    BufferedReader r = new BufferedReader(new InputStreamReader(is));
    StringBuilder total = new StringBuilder();
    String line;
    try
    {
        while ((line = r.readLine()) != null)
        {
            total.append(line);
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return total.toString();
}

Webサーバーから、事後値が追加されていないというメッセージが表示されます。コードから理解できる限り、値は追加されます。私は立ち往生しています。

4

2 に答える 2

1

私がしなければならなかったのは交換することだけであることが判明しました

connection.setRequestProperty("Content-Type", "text/xml");

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

非常に単純で、それをクリアするのに非常に多くの時間が費やされました...ところで、サーバーがこのヘッダーを必要としていることをどうやって知ることができますか?リクエストに不可欠なすべての作業は、javaによって自動的に行われると思いました。

PSフィドラーをインストールすると、問題の解決に役立ちました。ありがとうございます。

于 2012-12-28T15:04:39.353 に答える
0

「postParams」パラメーターをデバッグし、送信された内容を確認してください。

于 2012-12-28T13:47:51.667 に答える