HttpUrlConnection通过Post请求
注意: 需要在清单文件中配置文件
uses-permission android:name=”android.permission.INTERNET”
public class MainActivity extends AppCompatActivity {
private TextView ontv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ontv = (TextView) findViewById(R.id.onTv);
}
//Button监听
public void onPlay(View v) {
new Thread() {
@Override
public void run() {
super.run();
try {
//调用的主方法
final String s = onConnection();
runOnUiThread(new Runnable() {
@Override
public void run() {//更新操作
ontv.setText("post请求结果:" +s);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
//具体实现方法
public String onConnection() throws Exception {
//接口地址
//菜谱大全的网址:https://www.juhe.cn/docs/api/id/46
URL url = new URL("http://apis.juhe.cn/cook/query.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置与服务建立的连接时间
connection.setConnectTimeout(5000);
//设置读取网络数据的时间
connection.setReadTimeout(5000);
//设置请求方式 POST
connection.setRequestMethod("POST");
//写入流 键值对 key = value
OutputStream out = connection.getOutputStream();
out.write(("menu=" + "秘制红烧肉&" + "key=a7a42220c5c1c5268be7ba25af764f6c").getBytes());
PrintWriter printWriter = new PrintWriter(out);
printWriter.flush();
//服务器响应
int code = connection.getResponseCode();
if (code == 200) {//如果是200 就代表响应了
InputStream input = connection.getInputStream();
//引用写入流的方法
String in = MyEat.onFood(input);
System.out.println("post请求结果:" + in);
return in;
}
return "";
}
}
> 需要写一个Utils包,用来实现流转化工具类
public class MyEat {
public static String onFood(InputStream input){
//流转化成字符串
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] by = new byte[1024];
int len = 0;
while ((len =input.read(by)) != -1) {
out.write(by,0,len);
}
return out.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}