OkHttppost提交

    科技2022-07-12  125

    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请求的步骤非常像。

    Processed: 0.013, SQL: 8