2

JSONメッセージをサイトに投稿し、JSONメッセージを取得しようとしています。
java.net.ProtocolException:メソッドはリクエスト本文をサポートしていません:POST誰かが何が悪いのか知っていますか?前もって感謝します

                 HttpURLConnection conn=null;
        try{
            URL url=new URL(urlString);
            String userPassword = userName +":" + passWord;
            byte[] bytes=Base64.encode(userPassword.getBytes(),Base64.DEFAULT);
            String stringEncoding = new String(bytes, "UTF-8");

             conn = (HttpURLConnection) url.openConnection();
             conn.setReadTimeout(10000 /* milliseconds */);
             conn.setConnectTimeout(15000 /* milliseconds */);
             conn.setDoOutput(true);
             conn.setDoInput(true);
             conn.setRequestMethod("POST");
            conn.setRequestProperty ("Authorization", "Basic " + stringEncoding);
            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            Log.i("Net", "length="+conn.getContentLength());
            Log.i("Net", "contentType="+conn.getContentType());
            Log.i("Net", "content="+conn.getContent());
            conn.connect();

        }catch(Exception e){
            Log.d("Url Formation Connection", e.toString());
        } 

// output {try {

            String requestString="{“ ";


            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(requestString.toString());
            wr.flush();

    //input{
        BufferedReader rd = null;
        String response=" ";


            is = conn.getInputStream();
            rd = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer responseBuff = new StringBuffer();
            while ((line = rd.readLine()) != null) {
                // Process line...
                responseBuff.append(line);
            }
            response = responseBuff.toString();
            Log.d("response", response);
        }catch(Exception e){
            Log.d("buffer error", e.toString());
        }finally {
            if (is != null) {
                try {
                    wr.close();
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } 
4

3 に答える 3

3

接続しているサーバーが POST 操作を許可していない可能性があります。最初に GET リクエストを試して、その Web サービス メソッドに対する権限があるかどうかを確認します。

また、私はこのソリューションを自分でテストしていませんが、より単純な HttpClient で運を試すこともできます

于 2012-10-30T14:27:18.193 に答える
1

推測ですが、設定してみてください。

 conn.setDoOutput(false);

ドキュメントには、「オプションでリクエスト本文をアップロードします。インスタンスにリクエスト本文が含まれている場合は、setDoOutput(true)で構成する必要があります。」と記載されています。HttpURLConnection

体には何も入っていないので、falseに設定したほうがいいかもしれません。

于 2012-10-29T19:56:23.293 に答える
0

Android のsetRequestMethodに関するドキュメントは最小限ですが、POSTが有効なメソッドではないというエラーが表示されます。代わりにPUTを使用してみてください。

conn.setRequestMethod("PUT");

また、必要な調整については、この投稿を参照してください。

于 2012-10-29T20:00:51.283 に答える