2016-02-19 59 views
3

我想用OKHttp3做POST,但它一直返回404。我的代碼有什麼問題嗎?服務器端不斷告訴我,url和json是正確的。OKHttp3 post方法總是返回404錯誤

我曾嘗試另一篇文章的URL和JSON,它的工作原理,返回碼200

package com.epsfamily.www.kaipostb; 

import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import java.io.IOException; 
import java.util.logging.Logger; 

import okhttp3.MediaType; 
import okhttp3.OkHttpClient; 
import okhttp3.Request; 
import okhttp3.RequestBody; 
import okhttp3.Response; 

public class MainActivity extends AppCompatActivity { 

    OkHttpClient client = new OkHttpClient(); 

    public static final MediaType JSON 
      = MediaType.parse("application/json; charset=utf-8"); 

    String url; 


    // test data 
    String bowlingJson(String player1, String player2) { 
     return "{ \"deviceId\": \"1abcd\", \"buildingId\": 2, \"isRoutingOptimized\": false, \"isFromCurrentLocation\": true, \"startPoint\": 1, \"destinations\": [ 3, 4 ], \"createdAt\": \"2016-02-19T20:08:45.308Z\" } "; 
    } 

    String doPostRequest(String url, String json) throws IOException { 
     com.orhanobut.logger.Logger.json(json); 
     RequestBody body = RequestBody.create(JSON, json); 
     Request request = new Request.Builder() 
       .url(url) 
       .post(body) 
       .build(); 
     Response response = client.newCall(request).execute(); 
     com.orhanobut.logger.Logger.v("code: " + response.code()); 

     return response.body().string(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     url = "http://54.86.18.109:5080/Routing"; 

     new PostAsync().execute(); 
    } 

    public class PostAsync extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      String json = bowlingJson("Jesse", "Jake"); 
      String postResponse = null; 
      try { 
       postResponse = doPostRequest(url, json); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      System.out.println("res: " + postResponse); 

      return postResponse; 
     } 
    } 

} 

回答

1

最後,發現服務器給了我錯誤的網址。它應該是「http://54.86.18.109:5080/api/Routing」。

謝謝你們嘗試......

+1

我看到你有一些測試電話。如果您正在測試API,則可以使用Postman之類的內容:https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop – Gudin

+1

。如果我早些時候嘗試郵遞員,所有這些麻煩都可以保存下來。 –