Я пытаюсь сделать запрос после использования библиотеки okhttp3, но я продолжаю получать внутреннюю ошибку. Я новичок в использовании этой библиотеки и андроид-студии, но каждый регресс, который я рассматривал, имеет такой пост-запрос. Я делаю запрос неправильно, и если так, то все равно, чтобы это исправить?HTTP-запрос почты с json и okhttp3
package com.example.john.okhttp;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.json.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private Button btnSendHttpRequest;
private EditText etJsonResponse;
private TextView View;
private TextView View2;
private OkHttpClient okHttpClient;
private Request request ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set button and text view values
btnSendHttpRequest = (Button) findViewById(R.id.btnSendRequest);
View = (TextView) findViewById(R.id.view1) ;
View2 = (TextView) findViewById(R.id.textView4);
etJsonResponse = (EditText) findViewById(R.id.etjson);
//response for button
btnSendHttpRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//http request
new Requesting().execute();
}
});
}
public class Requesting extends AsyncTask<String , Void , String>
{
// post request stuff
@Override
protected String doInBackground(String... params) {
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
// get client
OkHttpClient client = new OkHttpClient();
//post method to post to server
String url = "http://45.55.92.243/newuser";
String json = "{ 'id' : 333333, 'name' : john }";
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try(Response response = client.newCall(request).execute()){
return response.body().string();
}
catch(Exception e){
System.out.println("section1");
return null;
}
}
@Override
protected void onPostExecute(String retstr) {
super.onPostExecute(retstr);
//rewrite text view
try {
// create json ob from response
JSONObject jsonObj = new JSONObject(retstr);
//get the values from the json key value pairs
String id = jsonObj.toString();
//update the text views
TextView textView = (TextView) findViewById(R.id.view1);
textView.setText(id);
System.out.println(retstr);
}
catch (Exception e){
System.out.println(retstr);
System.out.println("section2");
}
}
}
}
Я действительно планирую принять это, но, по-вашему, именно поэтому я получаю эту проблему? Я только узнал, что мой сервер получает запрос, но пакет json кончается как пустой. –
О, пожалуйста, используйте TextUtils (в пакете android.text), чтобы убедиться, что результат сервера не пуст! – SevenNight
Почему бы не использовать библиотеку волейбола? Он обрабатывает все для вас и довольно быстро. Проверьте это. – Rajeev