2017-10-09 117 views
0

這是我的錯誤:android - retrofit.RetrofitError:只允許使用一種HTTP方法。實測:PUT和PUT

D/Retrofit: java.lang.IllegalArgumentException: Sales.updateDeliveryLine: Only one HTTP method is allowed. Found: PUT and PUT. 
                       at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:123) 
                       at retrofit.RestMethodInfo.parseMethodAnnotations(RestMethodInfo.java:155) 
                       at retrofit.RestMethodInfo.init(RestMethodInfo.java:133) 
                       at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294) 
                       at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) 
                       at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) 
                       at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) 
                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                       at retrofit.Platform$Android$2$1.run(Platform.java:142) 
                       at java.lang.Thread.run(Thread.java:818) 

這是我在Android Studio中的代碼:

@PUT("/salesinsight/GetDeliveryScheduleLineRow/") 
     public void updateDeliveryLine(@Path("id") int id, @Body API_DeliveryScheduleLines api_deliveryScheduleLines, 
             Callback<API_DeliveryScheduleLines> callback); 

這是我在網絡API代碼:

// PUT: api/GetDeliveryScheduleLineRow/5 
    [ResponseType(typeof(void))] 
    public IHttpActionResult PutDelivery_Schedule_Lines(int id, Delivery_Schedule_Lines delivery_Schedule_Lines) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     if (id != delivery_Schedule_Lines.ID) 
     { 
      return BadRequest(); 
     } 

     db.Entry(delivery_Schedule_Lines).State = EntityState.Modified; 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (DbUpdateConcurrencyException) 
     { 
      if (!Delivery_Schedule_LinesExists(id)) 
      { 
       return NotFound(); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return StatusCode(HttpStatusCode.NoContent); 
    } 

請幫我解決我的問題。我不知道該怎麼辦。每次嘗試更新錯誤時都會顯示。提前致謝。

回答

0

首先在你的PUT方法中,你傳遞id爲Integer。但是你沒有在你的API路徑中提到缺少的id。希望能幫助到你。

@PUT("/salesinsight/GetDeliveryScheduleLineRow/{id}") 
    public void updateDeliveryLine(@Path("id") int id, @Body API_DeliveryScheduleLines api_deliveryScheduleLines, 
            Callback<API_DeliveryScheduleLines> callback); 
+0

OHHHH!我忘記了這一點,因爲我始終使用@Query。謝了哥們! –