2016-12-20 6 views
0

예, 알고 있습니다. 나와 다른 사람들은 전에도 비슷한 질문을했습니다. 그러나 내 구체적인 문제에 대한 도움을 찾고 있습니다. 나는이 코드를 다른 답변에서 그대로 그대로 복사 했으므로 여기서 내가 잘못 했습니까?Android POST HttpURLConnection을 만드는 방법

public void SendName(View v){ 
     EditText name = (EditText) findViewById(R.id.name); 
     String nombre = name.getText().toString(); 
     String parameters = "name="+nombre; 

     try{ 
      URL url2 = new URL("*****"); //I've got a correct URL here 
      HttpURLConnection connection = (HttpURLConnection) url2.openConnection(); 
      connection.setReadTimeout(15000); 
      connection.setConnectTimeout(15000); 
      connection.setRequestMethod("POST"); 
      connection.setDoOutput(true); 
      connection.setDoInput(true); 
      connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 

      OutputStream os = connection.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
      writer.write(parameters); 
      writer.close(); 

      os.close(); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
} 

"SendName"기능은 레이아웃의 버튼에서 onClick이라고합니다. 버튼을 누를 때마다 응용 프로그램이 충돌합니다. 뭐라 구요?

따라서 sayeth 로그 :

12-20 09:56:05.630 17593-17593/? D/dalvikvm: Late-enabling CheckJNI 
12-20 09:56:05.690 17593-17593/blacktentdigital.com.bintheredumpthatatl D/HyLog: I : /data/font/config/sfconfig.dat, No such file or directory (2) 
12-20 09:56:05.690 17593-17593/blacktentdigital.com.bintheredumpthatatl D/HyLog: I : /data/font/config/dfactpre.dat, No such file or directory (2) 
12-20 09:56:05.690 17593-17593/blacktentdigital.com.bintheredumpthatatl D/HyLog: I : /data/font/config/sfconfig.dat, No such file or directory (2) 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.view.Window$Callback.onProvideKeyboardShortcuts, referenced from method android.support.v7.view.WindowCallbackWrapper.onProvideKeyboardShortcuts 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve interface method 19512: Landroid/view/Window$Callback;.onProvideKeyboardShortcuts (Ljava/util/List;Landroid/view/Menu;I)V 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;) 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve interface method 19514: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve interface method 19518: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations 
12-20 09:56:05.760 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 476: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
12-20 09:56:05.770 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
12-20 09:56:05.770 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType 
12-20 09:56:05.770 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 498: Landroid/content/res/TypedArray;.getType (I)I 
12-20 09:56:05.770 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6e at 0x0008 
12-20 09:56:05.820 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.widget.FrameLayout.startActionModeForChild, referenced from method android.support.v7.widget.ActionBarContainer.startActionModeForChild 
12-20 09:56:05.820 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 19990: Landroid/widget/FrameLayout;.startActionModeForChild (Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
12-20 09:56:05.820 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6f at 0x0002 
12-20 09:56:05.830 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.content.Context.getColorStateList, referenced from method android.support.v7.content.res.AppCompatResources.getColorStateList 
12-20 09:56:05.830 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 290: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList; 
12-20 09:56:05.830 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006 
12-20 09:56:05.840 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawable 
12-20 09:56:05.850 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 439: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
12-20 09:56:05.850 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
12-20 09:56:05.850 17593-17593/blacktentdigital.com.bintheredumpthatatl I/dalvikvm: Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawableForDensity 
12-20 09:56:05.850 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve virtual method 441: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
12-20 09:56:05.850 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
12-20 09:56:05.860 17593-17593/blacktentdigital.com.bintheredumpthatatl E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 
12-20 09:56:05.860 17593-17593/blacktentdigital.com.bintheredumpthatatl W/dalvikvm: VFY: unable to resolve instanceof 141 (Landroid/graphics/drawable/RippleDrawable;) in Landroid/support/v7/widget/AppCompatImageHelper; 
12-20 09:56:05.860 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: VFY: replacing opcode 0x20 at 0x000c 
12-20 09:56:05.910 17593-17593/blacktentdigital.com.bintheredumpthatatl D/dalvikvm: GC_FOR_ALLOC freed 227K, 6% free 4729K/5016K, paused 16ms, total 16ms 
12-20 09:56:05.980 17593-17593/blacktentdigital.com.bintheredumpthatatl I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_KK_3.5_RB1.04.04.02.006.089_msm8610_KK_3.5_RB1__release_AU() 
                         OpenGL ES Shader Compiler Version: E031.24.00.06 
                         Build Date: 01/30/14 Thu 
                         Local Branch: 
                         Remote Branch: quic/kk_3.5_rb1.21 
                         Local Patches: NONE 
                         Reconstruct Branch: AU_LINUX_ANDROID_KK_3.5_RB1.04.04.02.006.089 + NOTHING 
12-20 09:56:06.010 17593-17593/blacktentdigital.com.bintheredumpthatatl D/OpenGLRenderer: Enabling debug mode 0 
12-20 09:56:06.540 17593-17593/blacktentdigital.com.bintheredumpthatatl I/ActivityManager: Timeline: Activity_idle id: [email protected] time:6431179 
12-20 09:56:13.060 17593-17593/blacktentdigital.com.bintheredumpthatatl W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
12-20 09:56:13.060 17593-17593/blacktentdigital.com.bintheredumpthatatl I/ActivityManager: Timeline: Activity_idle id: [email protected] time:6437691 
12-20 09:56:13.080 17593-17593/blacktentdigital.com.bintheredumpthatatl W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
12-20 09:56:13.530 17593-17593/blacktentdigital.com.bintheredumpthatatl W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
12-20 09:56:13.800 17593-17593/blacktentdigital.com.bintheredumpthatatl I/ActivityManager: Timeline: Activity_idle id: [email protected] time:6438430 
+0

당신은 주 스레드에서이 호출하고 있기 때문에 여기 로그 캣 나는이 문제를 추측하고있어 – bharat7777

+0

은 아마 공유하세요? BTW가'Retrofit'을 한번보세요 - 인생이 훨씬 쉬워 질 것입니다! –

+0

@ bharat7777 로그가 게시되었습니다. – Truth

답변

0
// I had use this code it is working fine for me try this one 

public class JsonParser { 

    String charset = "UTF-8"; 
    HttpURLConnection conn; 
    DataOutputStream wr; 
    StringBuilder result; 
    URL urlObj; 
    JSONObject jObj = null; 
    StringBuilder sbParams; 
    String paramsString; 

    public JSONObject makeHttpRequest(String url, String method, 
             HashMap<String, String> params) { 

     sbParams = new StringBuilder(); 
     int i = 0; 
     for (String key : params.keySet()) { 
      try { 
       if (i != 0){ 
        sbParams.append("&"); 
       } 
       sbParams.append(key).append("=") 
         .append(URLEncoder.encode(params.get(key), charset)); 

      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
      i++; 
     } 

     if (method.equals("POST")) { 
      // request method is POST 
      try { 
       urlObj = new URL(url); 

       conn = (HttpURLConnection) urlObj.openConnection(); 

       conn.setDoOutput(true); 

       conn.setRequestMethod("POST"); 

       conn.setRequestProperty("Accept-Charset", charset); 

       conn.setReadTimeout(10000); 
       conn.setConnectTimeout(15000); 

       conn.connect(); 

       paramsString = sbParams.toString(); 

       wr = new DataOutputStream(conn.getOutputStream()); 
       wr.writeBytes(paramsString); 
       wr.flush(); 
       wr.close(); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     else if(method.equals("GET")){ 
      // request method is GET 

      if (sbParams.length() != 0) { 
       url += "?" + sbParams.toString(); 
      } 

      try { 
       urlObj = new URL(url); 

       conn = (HttpURLConnection) urlObj.openConnection(); 

       conn.setDoOutput(false); 

       conn.setRequestMethod("GET"); 

       conn.setRequestProperty("Accept-Charset", charset); 

       conn.setConnectTimeout(15000); 

       conn.connect(); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 

     try { 
      //Receive the response from the server 
      InputStream in = new BufferedInputStream(conn.getInputStream()); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      result = new StringBuilder(); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       result.append(line); 
      } 

      Log.d("JSON Parser", "result: " + result.toString()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     conn.disconnect(); 

     // try parse the string to a JSON object 
     try 
     { 
      jObj = new JSONObject(result.toString()); 
     } 
     catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON Object 
     return jObj; 
    } 
} 
+0

나는 대답을 노크하지 않고있다. (그것이 작동하고 광산이 아니기 때문에)하지만 나는 돌아가서 네가 가진 것을 다시 시작하는 대신에 내가 가진 것을 고치고 싶어한다. 내가 가진 것은 이미 다른 사람으로부터 복사 된 것입니다. 나는 당신을 복사하고 비슷한 문제가 생기면 나는 더 악취가납니다. – Truth

+0

또한, 나는 이것이 어떻게 작동하는지 (복사 및 붙여 넣기뿐만 아니라) 배우는데 많은 관심이 있습니다. 왜 네 작품이 효과가 있고 광산이 그렇지 않은지에 대해 설명 할 수 있다면 훨씬 더 도움이 될 것이다. – Truth