簡體   English   中英

如何將JSONObject發送到REST服務?

[英]How to send a JSONObject to a REST service?

從REST服務器檢索數據效果很好,但如果我想發布一個對象則不起作用:

public static void postJSONObject(int store_type, FavoriteItem favorite, String token, String objectName) {
        String url = "";

        switch(store_type) {
            case STORE_PROJECT:
                url = URL_STORE_PROJECT_PART1 + token + URL_STORE_PROJECT_PART2; 
                //data = favorite.getAsJSONObject();
            break;
        }

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postMethod = new HttpPost(url);

        try {   
            HttpEntity entity = new StringEntity("{\"ID\":0,\"Name\":\"Mein Projekt10\"}");

            postMethod.setEntity(entity);

            HttpResponse response = httpClient.execute(postMethod);
            Log.i("JSONStore", "Post request, to URL: " + url);
            System.out.println("Status code: " + response.getStatusLine().getStatusCode());

        } catch (ClientProtocolException e) {

我總是得到400錯誤代碼。 有誰知道什么是錯的?

我有C#代碼,但我無法轉換:

 System.Net.WebRequest wr = System.Net.HttpWebRequest.Create("http://localhost:51273/WSUser.svc/pak3omxtEuLrzHSUSbQP/project");
            wr.Method = "POST";
            string data = "{\"ID\":1,\"Name\":\"Mein Projekt\"}";

            byte [] d = UTF8Encoding.UTF8.GetBytes(data);
            wr.ContentLength = d.Length;
            wr.ContentType = "application/json";

             wr.GetRequestStream().Write(d, 0, d.Length);
            System.Net.WebResponse wresp = wr.GetResponse();
            System.IO.StreamReader sr = new System.IO.StreamReader(wresp.GetResponseStream());
            string line = sr.ReadToEnd();

嘗試設置內容類型標題:

postMethod.addRequestHeader(“Content-Type”,“application / json”);

順便說一句,我強烈推薦澤西島 它有一個REST 客戶端庫 ,使這些事情更容易,更易讀

您的C#與Java不同,而不僅僅是語法。

您的C#通過HTTP POST將application/json實體發送到服務器。 我會告訴HTTP純粹主義者是否適當使用POST(與PUT相比)。

您的Java創建一個表單,其字段為jsonString (其值為JSON),並將application/x-www-form-urlencoded實體發送到包含該表單的服務器。

我會直接到服務器err_log或equivelant錯誤日志。 服務器知道它拒絕您的請求的原因。 如果您沒有訪問權限,請設置您自己的測試服務器並在那里復制問題,以便查看日志=)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM