post提交
运行截图:
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.okhttpw">
<uses-permission android:name="android.permission.INTERNET"/>
<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">
<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>
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/contentTv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是post提交"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.okhttpw;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private TextView contentTvs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contentTvs=findViewById(R.id.contentTv);
//1、拿到OkHttpClient对象
OkHttpClient client=new OkHttpClient();
//2、构建FormBody,传入参数
FormBody formBody=new FormBody.Builder()
.add("username","admin")
.add("password","admins")
.build();
//3、构建Request,将FormBody作为Post方法的参数传入
final Request request=new Request.Builder()
.post(formBody)
.url("https://www.baidu.com")
.build();
//4、将Request封装为Call
Call call=client.newCall(request);
//5、调用请求,重写回调方法
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Toast.makeText(MainActivity.this,"这是post Failed",Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String res=response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
contentTvs.setText(res);
}
});
}
});
}
}
相关解释:
OkHttp进行Post请求提交键值对
使用OkHttp进行
Post
请求和进行Get
请求很类似,只需要五步即可完成。
1 . 拿到OkHttpClient对象
OkHttpClient client = new OkHttpClient();
2 . 构建FormBody,传入参数
FormBody formBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "admin")
.build();
3 . 构建Request,将FormBody作为Post方法的参数传入
final Request request = new Request.Builder()
.url("http://www.jianshu.com/")
.post(formBody)
.build();
4 . 将Request封装为Call
Call call = client.newCall(request);
5 . 调用请求,重写回调方法
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Toast.makeText(OkHttpActivity.this, "Post Failed", Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String res = response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
contentTv.setText(res);
}
});
}
});
经过上面的步骤一个post请求就完成了,当然上面的
url
参数和需要传入的参数大家就要根据实际情况来传入,你会发现get和post请求的步骤非常像。