在这里我将按照自己一步步的顺序写下我写完app 的过程。
1、去www.tuling123.com注册获取APIKey
在网站中,进行注册,创建聊天机器人,获取自己的key
![](https://img.haomeiwen.com/i3767216/c8ad4530fb0ac775.png)
根据网站的介绍,你可以进行简单的测试,机器人每次对于应答的条件是:http://www.tuling123.com/openapi/api +apikey +info
例如我这里测试:
打到浏览器中,就可以获得返回的数据:
- {"code":100000,"text":"亲爱的,悄悄地告诉我你在哪个城市?"}
2、获取请求数据。
先写一个HttpData类,里面是一个AsyncTask异步请求。
package com.ych.wechat;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
public class HttpData extends AsyncTask<String,Void,String> {
private HttpClient mHttpClient;
private HttpGet mHttpGet;
private HttpResponse mHttpResponse;
private HttpEntity mHttpEntity;
private InputStream in;
private HttpGetDataListener listener;
private String url;
public HttpData(String url,HttpGetDataListener listener){
this.url=url;
this.listener = listener;
}
@Override
protected String doInBackground(String... params) {
try {
mHttpClient = new DefaultHttpClient();
mHttpGet = new HttpGet(url);
mHttpResponse = mHttpClient.execute(mHttpGet);
mHttpEntity = mHttpResponse.getEntity();
in = mHttpEntity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
StringBuffer sb = new StringBuffer();
while((line = br.readLine())!=null){
sb.append(line);
}
return sb.toString();
}catch (Exception e){
}
return null;
}
@Override
protected void onPostExecute(String s) {
listener.getDataurl(s);
super.onPostExecute(s);
}
}
其中,我们看到有HttpGetDataListener这个类,它其实只是一个另写的接口:
package com.ych.wechat;
public interface HttpGetDataListener {
void getDataurl(String data);
}
然后就是我们的主函数,先把它实现刚才的接口:
package com.ych.wechat;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity implements HttpGetDataListener{
private HttpData httpdata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
httpdata = (HttpData) new HttpData("http://www.tuling123.com/openapi/api?key=06423f1d68f64588b487ddeb031c8795&info=天气怎么",
this).execute();
}
@Override
public void getDataurl(String data) {
// TODO Auto-generated method stub
System.out.println(data);
}
}
这里只是简单的把请求放在onCreate中进行测试,后面会修改。
写到这里,基本的请求已经可以进行了,我们运行程序,可以看到结果就如之前在浏览器中看到的一样,是一个json结果。
记得在配置文件中添加权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
PS:
在这要注意的是,在android6.0(包括)以后,Google已经移除了移除了Apache HttpClient相关的类,推荐使用HttpUrlConnection
网友评论