【问题标题】:How to send Http post request to wit.ai如何向 wit.ai 发送 Http post 请求
【发布时间】:2016-06-10 13:54:49
【问题描述】:

由于 Android 的 Wit.AI API 已弃用,我正在尝试使用其 http api 从我的 wit.ai 应用程序中获取 json 格式的结果。我不知道这是否可能,但我正在尝试以这种方式从我的 android 应用程序发送一个 http 请求:

public class MainActivity extends AppCompatActivity {

String addressM = "https://api.wit.ai/message?v=20160526";
String accessToken = "BODF5LOCAIPJZI37KTWQKELNUR26ZMDH";
String header = "Authorization: Bearer ";
String query = "q";
String message = "partita";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    CallAPI runner = new CallAPI();
    runner.execute(addressM);
}

public class CallAPI extends AsyncTask<String, String, String> {

    public CallAPI() {
        //set context variables if required
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }


    @Override
    protected String doInBackground(String... params) {
        System.out.println("Running........................");

        String urlString = params[0]; // URL to call
        String resultToDisplay = "";

        InputStream in = null;
        try {

            URL url = new URL(urlString);

            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestProperty(header, accessToken);
            urlConnection.setRequestMethod("POST");
            urlConnection.setRequestProperty(query, message);
            in = new BufferedInputStream(urlConnection.getInputStream());


        } catch (Exception e) {

            System.out.println(e.getMessage());

            return e.getMessage();

        }

        try {
            resultToDisplay = IOUtils.toString(in, "UTF-8");
            //to [convert][1] byte stream to a string
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultToDisplay;
    }


    @Override
    protected void onPostExecute(String result) {
        //Update the UI
    }
}

我正在关注this doc,我正在尝试发送一个简单的“消息请求”。因此,我必须在包含我的身份验证令牌的 url 中放置一个标头,然后将我的请求放入其中。发送我的请求时,我应该在我的 wit.ai 应用程序中返回一个 json 和一个收件箱消息,但我什么都没有收到(目前我并不真正关心 json,而只是为了收件箱消息确保我的请求已发送)。我从另一个堆栈溢出问题中复制了上面的代码。 我使用互联网权限正确设置了我的清单。 有人可以帮我吗?

【问题讨论】:

  • 您是否尝试过使用 Retrofit 之类的东西?还是只是 OkHttp?它们使 POST 请求更容易,而且不需要 AsyncTask
  • 如果不是,那么你的代码对你从服务器读回的潜在结果没有做任何事情......所以,也许尝试将一些代码放入 onPostExecute
  • 所以不能按照你告诉我的方式去做,但我找到了这个stackoverflow.com/questions/35358232/…,它应该可以工作,我现在正在尝试得到结果
  • 不要太关注“wit.ai”。您只需要了解如何make a POST request。 OkHttp 哪个更简单
  • 另外,现在为时已晚,但您应该在发布之前从代码中删除访问令牌

标签: android http wit.ai


【解决方案1】:

将第 4,5 行更改为:

String accessToken = "Bearer BODF5LOCAIPJZI37KTWQKELNUR26ZMDH";
String header = "Authorization";

它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多