2014-09-15 4 views
1

나는이 코드를 가지고 있고 버튼을 클릭하면이 함수가 실행되지만이 함수는 PHP에 두 개의 요청을 보내고 PHP는 데이터베이스에 두 개의 레코드를 저장한다 ...?안드로이드에서 PHP로 두 요청 보내기

public void send() 
{ 
    //get message from message box 
    final String msg = msgTextField.getText().toString(); 
    InputStream is = null; 
    StringBuilder sb = null; 
    String result = null; 
    //check whether the msg empty or not 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    if(msg.length() > 0) { 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("URL"); 
      httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
      nameValuePairs.add(new BasicNameValuePair("Type", "MSG")); 
      nameValuePairs.add(new BasicNameValuePair("Message", msg)); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      httpclient.execute(httppost); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     } catch (Exception e) { 
      Log.e("log_tag", "Error in http connection" + e.toString()); 
     } 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine()); 
      String line = "0"; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line); 
      } 
      is.close(); 
      result = sb.toString(); 
      LinearLayout Lay = (LinearLayout)findViewById(R.id.MSGes); 
      TextView MyView = new TextView(this); 
      MyView.setLayoutParams(new ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT)); 
      MyView.setText(msg); 
      MyView.setId(Integer.valueOf(result.toString())); 
      Lay.addView(MyView); 

      } catch (Exception e) { 
       Log.e("log_tag", "Error converting result " + e.toString()); 
      } 

    } else { 
     Toast.makeText(getBaseContext(),"Empty",Toast.LENGTH_SHORT).show(); 
    } 

및 로그 캣 :

09-15 17 : 50 : 32.328 : SingleClientConnManager 잘못된 사용 : 아직 할당 연결 SingleClientConnManager (3651)/W. 09-15 17 : 50 : 32.328 : W/SingleClientConnManager (3651) : 다른 연결을 할당하기 전에 연결을 해제해야합니다. 09-15 17:50 : 32.758 : E/log_tag (3651) : 결과를 변환하는 중 오류가 발생했습니다. java.lang.ArrayIndexOutOfBoundsException : length = 1; index = 1 09-15 17 : 50 : 35.188 : W/SingleClientConnManager (3651) : 올바르지 않은 SingleClientConnManager 사용 : 여전히 연결이 할당되었습니다. 09-15 17 : 50 : 35.188 : W/SingleClientConnManager (3651) : 다른 연결을 할당하기 전에 연결을 해제해야합니다. 09-15 17 : 50 : 38.168 : W/SingleClientConnManager (3651) : 올바르지 않은 SingleClientConnManager 사용 : 연결이 여전히 할당되었습니다. 09-15 17 : 50 : 38.168 : W/SingleClientConnManager (3651) : 다른 연결을 할당하기 전에 연결을 해제해야합니다. 09-15 17:50:38.538 : E/log_tag (3651) : 결과를 변환하는 중 오류가 발생했습니다. java.lang.ArrayIndexOutOfBoundsException : length = 1; 만약 염려해야 = 1

답변

0

난 당신이 여기에 오타가 만든 것 같아요.

+0

무엇이 잘못 되었습니까, 고맙습니다. – user3398919

0

에러 인덱스

E/log_tag (3651)는 오류 변환 결과 java.lang.ArrayIndexOutOfBoundsException : 세로 = 1; index = 1

더 많은 것을 기대할 때 목록에 요소가 하나만있는 이유를 알아야합니다. 문제를 추적하려면 스택 추적을 인쇄하는 것이 좋습니다.

더 나은 것은 모든 예외가 아닌 특정 예외를 잡는 것입니다. catch (Exception e)은 코드에서 심각한 오류를 잠재적으로 축소 할 수 있기 때문에 나쁜 관행으로 간주됩니다.

httpclient.execute(httppost); 
HttpResponse response = httpclient.execute(httppost); 

가 첫 줄을 제외하고는 괜찮을한다 :