簡體   English   中英

如何從Android Studio應用程序向asp.net api控制器發送json?

[英]How to send a json to asp.net api Controller from android studio app?

我寫了一個應用程序,用戶必須用名稱,年齡等信息來填充一些文本字段。當他單擊按鈕時,數據將被發送到我的api控制器,在那里put方法將數據保存在數據庫中。

這是一種工作方式,我不知道如何將json發送到我的控制器。(我研究了幾天,但沒有任何效果)所以我現在要做的是用數據寫一個url符合字符串,以便在我的控制器中,我從字符串中讀出了我需要知道的內容。 這是一個非常糟糕的解決方案!(我不能做空格或斜杠等等。)

要發送我的UserData,我需要構建一個AsyncTask(當我沒有得到Exeption時)

class SendUserTask extends AsyncTask<String, Void, String>{
public AsyncResponse delegate = null;
User user;
 @TargetApi(Build.VERSION_CODES.KITKAT)
    protected String doInBackground(String... urls) {
        try {

            String r = sendUser("name" + user.getName() + "street" + user.getStreet());

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

public void setUser(User u){user = u;}

 public static String sendUser(String userData) throws Exception {

        URL url = new URL("http://my-address:port/api/users/"+ userData);
        HttpURLConnection c =(HttpURLConnection) url.openConnection();
        c.setRequestMethod("PUT");
        BufferedReader in = new BufferedReader(new InputStreamReader(
                c.getInputStream()));
        String inputLine;
        String result = "";
        while ((inputLine = in.readLine()) != null)
            result = inputLine;
        in.close();
        return result;
    }

}

當我只想發送一個id或得到一些東西時,此方法可以正常工作!

我的控制器是默認的api控制器,這是我的put方法:

     public String Put(string id, [FromBody]string value){
         //stuff
        }

請任何人幫忙!?!

嘗試考慮這篇文章。 它描述了如何使用改造將對象或實體發送到服務器。 我也找到了描述如何在服務器端檢索json數據的主題

更新

Android方面

  1. 嘗試創建將包含您要在服務器上發送的所有數據的簡單實體
  2. 創建將向服務器發送數據的簡單界面。 接下來考慮:

      public interface UserApi { @PUT("/api/users/") Call<Object> sendData(@Body FooRequest body); } 
  3. 獲取適配器結束發送請求

      Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://my-address:port") .build(); UserApi service = retrofit.create(UserApi.class) service.sendData(new FooRequest()); 

服務器端

  1. 嘗試像這樣創建apicontroller(我不確定)

      public class UtilityController : ApiController { [HttpPut] public string Put(FooRequest fooRequest) { return "bla"; } } 

希望對您有所幫助!

是我的測試項目

祝好運

暫無
暫無

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

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