如何使用Azure认知系统?

时间:2019-04-24 22:33:39

标签: java android azure api

我正在尝试将我的Android应用程序连接到Azure语音识别认知系统。

我使用了很多方法,但是每次我在“运行”中得到null时。

我第一次使用下面的代码。

第二次,我从Github下载了库,但是得到了相同的输出。

package com.example.api;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.net.URI;


public class MainActivity extends AppCompatActivity {
Button bb;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     bb=(Button)findViewById(R.id.bb);
     bb.setOnClickListener(
     new View.OnClickListener() 
     {
         @Override
         public void onClick(View v) {
            HttpClient httpclient = HttpClients.createDefault();

            try
            {
                URIBuilder builder = new URIBuilder("https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles");
                /*AsyncHttpClient client = new AsyncHttpClient();
                client.post()
                "https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles",
                new AsyncHttpResponseHandler() {}*/


                URI uri = builder.build();
                HttpPost request = new HttpPost(uri);
                request.setHeader("Content-Type", "application/json");
                request.setHeader("Ocp-Apim-Subscription-Key", getString(R.string.record));


                // Request body
                StringEntity reqEntity = new StringEntity(getString(R.string.loc));
                request.setEntity(reqEntity);


                HttpResponse response = httpclient.execute(request);
                HttpEntity entity = response.getEntity();

                if (entity != null)
                {
                    Log.i("",EntityUtils.toString(entity));
                }
            }
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
     });
    }
}

清单:

   <uses-permission
 android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


     <application

         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
         <uses-library
             android:name="org.apache.http.legacy"
             android:required="false" />
         <activity android:name=".MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />

                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
     </application>

 </manifest>

我希望输出响应为200500;但是,实际输出是:

  

I / System.out:空

1 个答案:

答案 0 :(得分:0)

EntityUtils.toString(entity)返回entity.getContent()-即使entity不是,也可以为空/空。

Check the reply from response.getStatusLine() first.