์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- join
- Til
- ํผ๊ณตํ
- ์คํฐ๋
- ๊ธฐ์ ๋ฉด์
- SQL
- select
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฃ๊ตฌ์กฐ
- Android
- ์ ์ฒ๊ธฐ
- groupby
- ์๋๋ก์ด๋์คํ๋์ค
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- doitandroid
- ํผ๊ณต๋จ
- ํผ๊ณต์ฑ๋ฆฐ์ง
- ์ฝํ๋ฆฐ
- ์๋ฐ
- ์นด์นด์ค์ฝํ
- ์ฝํ
- java
- MySQL
- ์ค๋ธ์
- Kotlin
- ์ธํ๋ฐ
- CS
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋๋ก์ด๋
- Today
- Total
Welcome! Everything is fine.
[Andorid] Volley ์ฌ์ฉ๋ฒ ๋ณธ๋ฌธ
๐ Volley๋?
์น ์์ฒญ๊ณผ ์๋ต์ ๋จ์ํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์์ฒญ(Request) ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์์ฒญ ํ(RequestQueue)์ ๋ฃ์ด์ฃผ๋ฉด ์์ฒญ ํ๊ฐ ์์์ ์น ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต๊น์ง ๋ฐ์์ค๋ค. ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด๋๋ฉด ์๋ต์ด ์์ ๋ ๊ทธ ๋ฉ์๋๊ฐ ์๋์ผ๋ก ํธ์ถ๋๋ค. Volley ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฅ์ ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๋ ์ ์ด๋ค.
๐ Volley ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐํ๊ธฐ
Volley๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฏ๋ก build.gradle ํ์ผ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ผ ์ฌ์ฉํ ์ ์๋ค. Gradle Scripts > build.gradle(Module: ~) ์์ dependencies์ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
implementation 'com.android.volley:volley:1.2.1'
๐ INTERNET ๊ถํ ์ถ๊ฐํ๊ธฐ
์ธํฐ๋ท์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ AndroidManifest.xml ํ์ผ์ INTERNET ๊ถํ์ ์ถ๊ฐํด์ผํ๋ค. ๋ application ํ๊ทธ์ useCleartextTraffic์์ฑ์ true๋ก ์ค๋ค.
<uses-permission android:name="android.permission.INTERNET"/>
android:usesCleartextTraffic="true"
๐ ์น ์์ฒญํ๊ธฐ
์ ๋ ฅ์์์ ์ฌ์ดํธ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ ์์ฒญํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ํด๋น ์ฃผ์๋ก ์น ์์ฒญ์ ํ๋๋ก MainActivity.java ํ์ผ์ ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ค. ๋จผ์ OnCreate() ๋ฉ์๋ ์์ ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ํ๋ฉด์ ๋ง๋ ์์ฒญํ๊ธฐ ๋ฒํผ(requestBtn)์ ๋๋ฅผ ์ makeRequest() ๋ฉ์๋๊ฐ ์คํ๋๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฒญ ํ๋ static ํค์๋๋ก ํด๋์ ๋ณ์๋ฅผ ์ ์ธ ํ ํ ํ ๋นํ๋ค. ์์ฒญ ํ๋ ํ ๋ฒ๋ง ๋ง๋ค์ด ๊ณ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์์ฒญ ํ๋ ํ๋์ ์กํฐ๋นํฐ์์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ์ฑ ์ ์ฒด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. ์์ฒญ ํ๋ฅผ ๋ง๋ค ๋๋ Volley.newRequestQueue ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
private ActivityMainBinding binding;
static RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.requestBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
makeRequest(); // ์์ฒญํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด makeRequest() ๋ฉ์๋ ์คํํจ.
}
});
if(requestQueue == null) {
requestQueue = Volley.newRequestQueue(getApplicationContext()); // ์์ฒญ ํ๋ฅผ ๋ง๋ฆ.
}
}
makeRequest() ๋ฉ์๋์์๋ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด StringRequest ํด๋์ค๋ก ์์ฒญ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋ค. StringRequest๋ ๋ฌธ์์ด์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์ฒญ ๊ฐ์ฒด์ด๊ณ , ์ด์ธ์๋ ๋ค์ํ ์์ฒญ ๊ฐ์ฒด๊ฐ ์๋๋ฐ, ์ผ๋ฐ์ ์ผ๋ก StringRequest ๊ฐ์ฒด๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค. ๋๋จธ์ง ๋ถ๋ถ์ ๋ํ ์ค๋ช ์ ์ฃผ์์ ์ ์ด๋์๋ค.
package com.example.samplerequest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.samplerequest.databinding.ActivityMainBinding;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
static RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.requestBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
makeRequest(); // ์์ฒญํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด makeRequest() ๋ฉ์๋ ์คํํจ.
}
});
if(requestQueue == null) {
requestQueue = Volley.newRequestQueue(getApplicationContext()); // ์์ฒญ ํ๋ฅผ ๋ง๋ฆ.
}
}
public void makeRequest() {
String url = binding.editText.getText().toString(); // ๋ณ์ url์ ์
๋ ฅ์์์ ๋ค์ด๊ฐ ์ฃผ์๋ฅผ String์ผ๋ก ๋ฐ๊ฟ ๋ฃ์.
// ์์ฒญ ๊ฐ์ฒด๋ฅผ ๋ง๋ฆ.(StringRequest - ๋ฌธ์์ด์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์ฒญ๊ฐ์ฒด)
/* ์์ฒญ๊ฐ์ฒด๋ฅผ new ์ฐ์ฐ์๋ก ๋ง๋ค ๋ ์ด 4๊ฐ์ ํ๋ผ๋ฏธํฐ ์ ๋ฌ
1. GET or POST ๋ฉ์๋ ์ ๋ฌ(์์ฒญ ๋ฐฉ์ ์ง์ )
2. url(์น ์ฌ์ดํธ ์ฃผ์) ์ ๋ฌ
3. ์๋ต๋ฐ์ ๋ฆฌ์ค๋ ๊ฐ์ฒด ์ ๋ฌ(์๋ต ๋ฐ์ผ๋ฉด onResponse ๋ฉ์๋ ์๋ ํธ์ถ)
4. ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ํธ์ถ๋ ๋ฆฌ์ค๋ ๊ฐ์ฒด ์ ๋ฌ
*/
StringRequest request = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
println("์๋ต -> " + response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
println("์๋ฌ -> " + error.getMessage());
}
}
) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
return params;
}
};
request.setShouldCache(false);
requestQueue.add(request); // ์์ฒญ ํ์ add ๋ฉ์๋๋ก ์์ฒญ ๊ฐ์ฒด ๋ฃ๊ธฐ
println("์์ฒญ ๋ณด๋.");
}
public void println(String data) {
binding.requestTv.append(data + "\n");
}
}
๐ ์คํ ๊ฒฐ๊ณผ
์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๊ณต๊ณต๋ฐ์ดํฐํฌํธ ์คํ API์ Request URL๋ฅผ ๋ฃ๊ณ ์์ฒญํ๊ธฐ ๋ฒํผ์ ๋๋ ๋๋ JSON ํํ๋ก ๋ ์๋ต ๊ฒฐ๊ณผ๊ฐ ํ ์คํธ๋ทฐ์ ์ถ๋ ฅ๋์๋ค.
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android/study] ๋ค์ด๋ฒ ์ง๋โ ๋งต ์ฌ์ฉํ๊ธฐ, ํ์ฌ ์์น ํ์, ๋ง์ปค ๋์ฐ๊ธฐ (0) | 2022.08.01 |
---|---|
[Android/study] ๋ถํ์ํ ํ ์คํธ ์ ๊ฑฐํ๊ธฐ, ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ๋ง๋ค๊ธฐ (0) | 2022.05.24 |
[Android] ๋ทฐ ๋ฐ์ธ๋ฉ ํ๊ธฐ (0) | 2022.05.14 |
[Android] ํ๋๊ทธ(Flag) (0) | 2022.03.11 |
[Android] ์ธํ ํธ(Intent) ์ดํด๋ณด๊ธฐ (0) | 2022.03.10 |