버튼을 클릭하고 데이터가 양식에서 나올 때 웹 서버로 일부 데이터를 보낼 앱을 만들려고합니다. 데이터 유형은 이름, 성 및 기타입니다. 저는 초보 개발자이며 앱에서 HTTP 요청을 보내기 위해 OKHTTPFClient 플러그인을 시도하고 있습니다. 내가 필요한 것은 양식 데이터를 클릭하면 PHP로 전송되고 PHP는 성공 응답을 제공하고 앱이 가져오고 활동이 감사 활동으로 리디렉션됩니다. 지금 시도중인 코드는 다음과 같습니다.
submitRequest.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if ( firstName.getText().toString().length() == 0 ) {
firstName.setError("Please enter your first name!");
}
if ( firstName.getText().toString().length() != 0 ) {
Toast.makeText(getApplicationContext(), firstName.getText().toString(), Toast.LENGTH_SHORT).show();
requestHTTP(firstName.getText().toString());
} else {
}
}
});
다음은 OKHTTPClient에 대한 방법입니다.
private void requestHTTP(String first_name) {
OkHttpClient httpClient = new OkHttpClient();
String url = "https://www.example.com/action.php";
RequestBody formBody = new FormBody.Builder()
.add("first_name", first_name)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = null;
try {
response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
Toast.makeText(getApplicationContext(), firstName.getText().toString(), Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
}
}
업데이트 :
Android 실행 섹션에 표시되는 오류는 다음과 같습니다.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.androidapp, PID: 11592
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at okhttp3.Dns$1.lookup(Dns.java:39)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:185)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:149)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:84)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:213)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall.execute(RealCall.java:77)
at org.goldenfs.payoffcalculator.advisor.requestHTTP(advisor.java:220)
at org.goldenfs.payoffcalculator.advisor.access$000(advisor.java:38)
at org.goldenfs.payoffcalculator.advisor$4.onClick(advisor.java:188)
at android.view.View.performClick(View.java:6261)
at android.widget.TextView.performClick(TextView.java:11180)
at android.view.View$PerformClick.run(View.java:23748)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
애플리케이션이 종료되었습니다.
그 문제를 해결하도록 도와주세요. 도와 주셔서 정말 감사합니다 ... :)
android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1303)의 android.os.NetworkOnMainThreadException
당신은 사용해야합니다 THREAD
.
//A thread is a thread of execution in a program.
// The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try
{
OkHttpClient httpClient = new OkHttpClient();
String url = "https://www.example.com/action.php";
RequestBody formBody = new FormBody.Builder()
.add("first_name", first_name)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = null;
try {
response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
Toast.makeText(getApplicationContext(), firstName.getText().toString(), Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
에서 OkHttp
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다