【问题标题】:How to send a json to asp.net api Controller from android studio app?如何从 android studio 应用程序将 json 发送到 asp.net api 控制器?
【发布时间】:2015-12-14 02:36:43
【问题描述】:

我写了一个应用程序,用户必须用信息填写一些文本字段 比如名字,年龄......当他点击一个按钮时,数据被发送到我的 api 控制器,其中 put 方法将数据保存在数据库中。

这是一种工作示例,我不知道如何将 json 发送到我的控制器。(我研究了几天但没有任何效果) 所以我现在要做的是用我的数据编写一个符合 url 的字符串 所以在我的控制器中,我从字符串中读出了我需要知道的内容。 这是一个非常糟糕的解决方案!(我不能做空格或斜线等等......)

为了发送我的 UserData,我构建了一个 AsyncTask(当我没有收到异常时)

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 控制器 这是我的放置方法:

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

请任何人帮忙!?!

【问题讨论】:

  • 尝试考虑好的android库-Retrofit也许它会帮助你,让你的生活更轻松
  • 我还没有在这里看到任何包含 json 的 json 对象或字符串。 sendUser("name" + user.getName() + "street" + user.getStreet()); 行也不能分配给标准 html 请求。您的示例错误,请尝试考虑 more example 并了解如何将 json 对象从 android 发送到服务器
  • @OlegDokuka 那不是我的 Json,我只是在构建一个字符串,以便我可以将它添加到我的 url 中。我建议用 json 发送它,我知道如何编写 json。

标签: android asp.net json


【解决方案1】:

尝试考虑this 的帖子。它描述了如何使用改造将对象或实体发送到服务器。我还发现 topic 描述了如何在服务器端检索 json 数据。

更新

安卓端

  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";
         }
      }
    

希望对你有帮助!

here 是我的测试项目

祝你好运

【讨论】:

  • 感谢您的回答!!!我完全按照你说的做了一切,但我明白了:com.android.internal.os.RuntimeInit$UncaughtHandler 有什么想法吗?
  • 嗯,你能分享你的代码(github等),或者可以发布logcat日志
  • 尝试考虑下一个example,并使用Android Studio创建了新项目,如果您稍等一下,我将创建一个简单的项目并为您发布
  • Here 我已经为你准备了工作示例,用你的服务器测试它并告诉我结果
  • 非常感谢您的努力!这是完美的工作!我必须看看我在实际项目中做错了什么,但现在我知道该怎么做并且我的网络服务没有损坏。
猜你喜欢
  • 2015-12-15
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多