2014-03-28 61 views
0

HttpUrlConnection:狀態405不允許使用錯誤方法。HttpUrlConnection:不允許使用狀態405錯誤方法

當發送請求時,我收到來自服務器405的錯誤。我做錯了什麼? 發送請求時,我收到來自服務器405的錯誤。我做錯了什麼?

class SendAnswer extends AsyncTask<Void, String, Boolean> { 

     @Override 
     protected Boolean doInBackground(Void... voids) { 
      try { 
       URL url = new URL(AppConstant.SEND_ANSWER + _survey_id + "/answers/"); 
       System.out.println("SEND URL " + url); 
       HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
       connection.setRequestMethod("POST"); 
       connection.setDoInput(true); 
       connection.setDoOutput(true); 
       connection.setUseCaches (false); 
       connection.setRequestProperty("Accept", "application/json"); 
       connection.setRequestProperty("Auth-Token", mSettings.getString("token", "")); 
       connection.setRequestProperty("Content-Type","application/json"); 
       connection.connect(); 
       JSONObject params = new JSONObject(); 
       JSONArray jsonArray = new JSONArray(); 
       JSONObject answerObj = new JSONObject(); 
       JSONArray survey_pages = new JSONArray(); 
       JSONObject survey_page = new JSONObject(); 
       JSONObject surveyObj = new JSONObject(); 
       JSONObject jObj = new JSONObject(); 
       survey_page.put("id", _page_id); 
       survey_pages.put(survey_page); 
       surveyObj.put("survey_pages", survey_pages); 
       int listSize = question_list.size(); 
       for (int i = 0; i<listSize; i++) { 
         question = question_list.get(i).id; 
         params.put("question", question); 
         params.put("answer", "true"); 
         jsonArray.put(params); 
         jObj.put("answers", jsonArray);          
       } 
        survey_pages.put(jObj); 
        System.out.println("jsonString: "+ surveyObj.toString()); 
        DataOutputStream printout = new DataOutputStream(connection.getOutputStream()); 
        printout.writeBytes(surveyObj.toString()); 
        printout.flush(); 
        printout.close(); 

        int status = connection.getResponseCode(); 
        System.out.println("Connection " + status); 


      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return null; 

     } 
    } 
+1

你到一個特定的執行POST鏈接。很可能您發佈的鏈接不允許發佈POST,只有GET。 – Fortega

回答

0

試試這個

 HttpClient client = getHttpClient(); 
     HttpPost request = new HttpPost(universal_URL_MENU+"?request_menu="+start_menu); 

     HttpResponse response = client.execute(request); 
      System.out.println("response in class"+response); 
      in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

其中getHttpClient()

   private static HttpClient getHttpClient() { 
     if (mHttpClient == null) { 
      mHttpClient = new DefaultHttpClient(); 
      final HttpParams params = mHttpClient.getParams(); 
      HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT); 
      HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT); 
      ConnManagerParams.setTimeout(params, HTTP_TIMEOUT); 
     } 
     return mHttpClient;  
    } 

////

private static HttpClient mHttpClient;    
0
   conn = (HttpURLConnection) new URL(url).openConnection(); 
       conn.setRequestMethod(reqMethod); 
       conn.setConnectTimeout(15000); 
       conn.setReadTimeout(15000); 
       byte[] data = params.getBytes(); 
       if(!isJoinOrLoginOrResetPasswordMethod){ 
        conn.setRequestProperty("Authorization",USE_KEY); 
       } 
       conn.setRequestProperty("X-Application-Id", APP_ID); 

       // conn.setRequestProperty("X-Application-Id" 

       conn.setDoOutput(true); 
       // conn.setDoInput(true); 
       OutputStream out = conn.getOutputStream(); 
       // out.write(params.getBytes("UTF-8")); 
       out.write(data); 
       out.flush(); 
       out.close(); 
       int responseCode = conn.getResponseCode(); 

       The responseCode =405 what is wrong ?? 
+1

你還可以添加一個解釋嗎? – Robert