내 응용 프로그램에는 json이 url-> php 스크립트를 호출하고 mysql 데이터베이스에 데이터를 검색하고 추가하는 params를 사용하여 http 요청을하는 여러 가지 활동이 있습니다. 지금까지 좋은 모든 것. 최근 활동은 5 개의 매개 변수를 사용하고 다른 두 매개 변수가 일치하는 경우 3 개의 매개 변수를 설정하는 업데이트 문을 실행합니다. 이 문장의 시점에서 로그를 추가 :
JSONObject json = jParser.makeHttpRequest(url_update_customer, "GET", params);
것은 나에게 브라우저에이 JSONParser.java is: website link/update_customer.php?CustomerId=1018&FirstName=rob&LastName=fghj&EmailAddress=fhghg%40yyghh&DeviceId=357647053761497
내가 컷과 과거의 호출을 표시하고 내가 얻을 실행 :
{"success":1,"message":"Customer row successfully updated for rob,fghj,[email protected]"}
JSONObject json = jParser.makeHttpRequest 치명적인 오류
PHP 스크립트에서 나는 내 고객 테이블에서 업데이트되는 세부 정보를 볼 수 있도록 업데이트되는 datetime 열이 있어야합니다. 모든 작업이 정상적으로 작동합니다. 내 문제는 업데이트를 실행하기 위해 버튼을 클릭 할 때 치명적인 오류가 발생하고 이유를 알 수없는 경우입니다. 내가 디버그에서 실행했지만 오류가 어디에서 오는 다만 말할 수 없다, 로그 캣은 말합니다 :
11-28 15:43:35.437: D/json before JSONobject(9148): http://www.mywebsite.co.uk/update_customer.php
11-28 15:43:35.437: D/url from JSON Parser(9148): http://www.mywebsite.co.uk/update_customer.php?CustomerId=1018&FirstName=rob&LastName=fghj&EmailAddress=fhghg%40yyghh&DeviceId=357647053761497
11-28 15:43:35.445: D/AndroidRuntime(9148): Shutting down VM
11-28 15:43:35.445: W/dalvikvm(9148): threadid=1: thread exiting with uncaught exception (group=0x4178a2a0)
11-28 15:43:35.468: E/AndroidRuntime(9148): FATAL EXCEPTION: main
11-28 15:43:35.468: E/AndroidRuntime(9148): android.os.NetworkOnMainThreadException
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
11-28 15:43:35.468: E/AndroidRuntime(9148): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11-28 15:43:35.468: E/AndroidRuntime(9148): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-28 15:43:35.468: E/AndroidRuntime(9148): at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-28 15:43:35.468: E/AndroidRuntime(9148): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-28 15:43:35.468: E/AndroidRuntime(9148): at com.example.uitest4.common.JSONParser.makeHttpRequest(JSONParser.java:62)
11-28 15:43:35.468: E/AndroidRuntime(9148): at com.example.uitest4.PlaceOrderActivity.updateCustomer(PlaceOrderActivity.java:265)
11-28 15:43:35.468: E/AndroidRuntime(9148): at com.example.uitest4.PlaceOrderActivity$6.onClick(PlaceOrderActivity.java:228)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.view.View.performClick(View.java:4274)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.view.View$PerformClick.run(View.java:17357)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.os.Handler.handleCallback(Handler.java:615)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.os.Handler.dispatchMessage(Handler.java:92)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.os.Looper.loop(Looper.java:137)
11-28 15:43:35.468: E/AndroidRuntime(9148): at android.app.ActivityThread.main(ActivityThread.java:4949)
11-28 15:43:35.468: E/AndroidRuntime(9148): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 15:43:35.468: E/AndroidRuntime(9148): at java.lang.reflect.Method.invoke(Method.java:511)
11-28 15:43:35.468: E/AndroidRuntime(9148): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043)
11-28 15:43:35.468: E/AndroidRuntime(9148): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
11-28 15:43:35.468: E/AndroidRuntime(9148): at dalvik.system.NativeStart.main(Native Method)
11-28 15:43:45.312: I/Process(9148): Sending signal. PID: 9148 SIG: 9
11-28 15:43:46.578: D/dalvikvm(9245): GC_CONCURRENT freed 500K, 18% free 8123K/9863K, paused 12ms+2ms, total 38ms
입니다 OnClickListener를 버튼을 통해 호출 된 메소드의 코드 :
public void updateCustomer() {
final DatabaseHelper dbHelper = new DatabaseHelper(this);
// JSON Node names
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
Log.d("url customer update ",String.valueOf(url_update_customer) + " " + dbHelper.getCustomerId() + " " + dbHelper.getCustomerFirstName());
params.add(new BasicNameValuePair("CustomerId",dbHelper.getCustomerId()));
params.add(new BasicNameValuePair("FirstName",editfirstname.getText().toString()));
params.add(new BasicNameValuePair("LastName",editlastname.getText().toString()));
params.add(new BasicNameValuePair("EmailAddress",editemailaddress.getText().toString()));
params.add(new BasicNameValuePair("DeviceId",dbHelper.getCustomerDeviceId()));
Log.d("json before JSONobject",url_update_customer);
JSONObject json = jParser.makeHttpRequest(url_update_customer, "GET", params);
// Check your log cat for JSON reponse
if (json != null) {
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.d("json success update customer ","");
// customer details updated, run insert_order_status
insertOrderStatus();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
언급 한 바와 같이 나는 같은 접근법을 따르는 다양한 다른 활동을하고있다. 그러나 이것은 나를 당황하게한다. 어떤 도움이 필요하면 감사드립니다. 더 자세히 알고 싶으면 감사합니다.
또한 이전에이 예외가 발생했습니다, 당신은 메인 스레드에서 일부 네트워크 관련 질문을하려고 할 때 발생합니다. 별도의 스레드에서 해보면 작동해야합니다. –