[안드로이드] okhttp로 POST 요청하는 법

프로그래밍/Android 관련2017. 12. 13. 21:19

안녕하세요. 개발자 드리머즈입니다.


안드로이드에서 okhttp 사용 시

POST http/https request 및 response 사용 법에 대한 포스트입니다.


출처 : https://stackoverflow.com/questions/23456488/how-to-use-okhttp-to-make-a-post-request

OkHttpClient client = new OkHttpClient();

RequestBody formBody = new FormBody.Builder()
        .add("message", "Your message")
        .build();
Request request = new Request.Builder()
        .url("http://www.foo.bar/index.php")
        .post(formBody)
        .build();

try {
    Response response = client.newCall(request).execute();

    // Do something with the response.
} catch (IOException e) {
    e.printStackTrace();
}

stackoverflow 사이트에 나와있듯이, 위처럼 사용하시면 됩니다.
다만 main thread에서 위의 코드를 사용하면 안되기에 AsynkTask안에서 사용해야 할 것 같습니다.
아니면 callback을 이용하는 방법이 있습니다.
제가 사용하는 방법입니다.
길지 않은 소스이기에.. 한 번 보시면 대충 파악이 될 것입니다.
add()함수로 POST 데이터를 넣어주고,
Callback을 이용해서 http/https의 response를 처리합니다.

public void updateUserInfo(){
OkHttpClient client = new OkHttpClient();

RequestBody formBody = new FormBody.Builder()
.add("userId", userId)
.add("email", email)
.add("nickName", nickname)
.add("thumbnailURL", thumbnailURL)
.build();

Request request = new Request.Builder()

.url("https://www.test.com/insert_user.php")
.post(formBody)
.build();

client.newCall(request).enqueue(updateUserInfoCallback);
}

private Callback updateUserInfoCallback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("TEST", "ERROR Message : " + e.getMessage());
}

@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseData = response.body().string();
Log.d("TEST", "responseDatae : " + responseData);

}
};


작성자

Posted by 드리머즈

관련 글

댓글 영역