在Android Studio中,我在我的项目中使用OkHttp设置了登录页面,但是OkHttp连接方面存在一些问题。我不知道如何创建POST正文。 下面是我的代码:
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isNetworkAvailable()) {
userLogin();
final String email = inemail.getText().toString().trim();
final String password = inpass.getText().toString().trim();
okHttpClient = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"action\":\"patientappointmentlist\",\"tokenid\":\"j9394je902jew92jeY9j\",\"user\":"+email+",\"pass\":"+password+"}");
//"{"jsonExample":"value"}"
request = new Request.Builder()
.url("https://secure.advcare.info")
.post(body)
.addHeader("Content-Type", "application/json")
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
final String responseData = response.body().string();
JSONObject json = new JSONObject(responseData);
final String owner = json.getString("status");
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
show.setText(owner+email+password);
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Log.d(TAG, "Main thread is running");
} else {
Toast.makeText(getApplicationContext(), "Networket Problem ! ", Toast.LENGTH_SHORT).show();
}
}
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if (networkInfo != null && networkInfo.isConnected()) {
isAvailable = true;
}
return isAvailable;
}
private void userLogin() {
String email = inemail.getText().toString().trim();
String password = inpass.getText().toString().trim();
if (email.isEmpty()) {
inemail.setError("Email is required");
inemail.requestFocus();
return;
}
}
if (password.isEmpty()) {
inpass.setError("Password required");
inpass.requestFocus();
return;
}
}
});
}
当我将RequestBody更改为:
RequestBody body = RequestBody.create(mediaType, "{\"action\":\"patientappointmentlist\",\"tokenid\":\"j9394je902jew92jeY9j\",\"user\":"apptester",\"pass\":"123456"}");
工作正常。 虽然我在应用程序中正确输入了电子邮件和密码。 请帮我。
答案 0 :(得分:-1)
这是带有POST方法的示例OKHtttp连接。
此示例代码login_username.getText().toString())
将获得您在用户名edittext中输入的文本。
当用户输入的用户名和密码正确时,它将重定向到HomeActivity.class
代码:
private void submitForm() throws IOException {
try
{
urlAPI = new URL("http://testsiteprog.com./accounts/signin.php");
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
OkHttpClient client = new OkHttpClient();
//INPUT *GETTEXT
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("username", login_username.getText().toString());
jsonObject.put("password", login_password.getText().toString());
jsonObject.put("ipaddress", get_publicIPaddress);
}
catch (JSONException e) {
e.printStackTrace();
}
MediaType JSON =MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create(JSON, jsonObject.toString());
Log.i("LOG_INTENT", login_username.getText().toString() + login_password.getText().toString() + get_publicIPaddress);
Request request = new Request.Builder()
.url(urlAPI)
.post(requestBody)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
String mMessage = e.getMessage();
Log.w("failure Response", mMessage);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String mMessage = response.body().string();
try {
JSONObject object = new JSONObject(mMessage);
responseCode = object.getString("code");
responseMsg = object.getString("message");
responseToken = object.getString("token");
if(response.code() == 200) {
Intent intentHome = new Intent(LoginActivity.this, HomeActivity.class);
intentHome.putExtra("TOKEN", responseToken);
Log.i("TAG", "Login Activity" + responseToken);
startActivity(intentHome);
Log.i("INTENT", "NAKUKUHA BA AT NATAPOS?");
}
else if(response.code() == 400){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(LoginActivity.this, responseMsg, Toast.LENGTH_SHORT).show();
}
});
}
}
catch (JSONException e) {
e.printStackTrace();
}
Log.i("RESPONSE", response + mMessage + "code" + responseCode + responseToken );
}
});
Log.i("GET", "NAKUKUHA BA AT NATAPOS?");
}
希望这将有助于解决您的问题。