2012-12-09 1 views
0

내 앱에서 JSON 웹 서비스 사이트에 이메일 주소와 비밀번호를 보내고 주어진 정보를 검색하는 데 수 년 이상 같은 코드를 사용하고 있습니다. 나는 지금 업데이트 목적으로 몇 가지 추가 정보를 보내려고하지만 두 개의 추가 값을 추가하면 앱이 다운됩니다.JSON에 보낼 때 HttpGet (url)에서 앱이 작동을 멈 춥니 다

private void doTfr() { 
    String result = ""; 
    String mailAddr = " "; 
    String feedback = " "; 
    String lectName = MyLecturesActivity.LectName; 
    String url = "http://jobtracker.myweb.com/jsonWeb/Default.aspx"; 

    mailAddr = "[email protected]";  
    EditText fBack = (EditText) findViewById(R.id.myfeedback_feedback2); 
    feedback = fBack.getText().toString(); 
    lectName = "Test Android"; 

    url = url + "?maddr=" + mailAddr + "&pwd=FB&lect=" + "\"lectName\"&fb=\"" + feedback + "\""; 

    //url = url + "?maddr=" + mailAddr + &pwd=BI"; Using this url works!      
    try { 

    HttpClient httpclient = new DefaultHttpClient(); 

     HttpGet httpget = new HttpGet(url); ****Crashes here 

     HttpResponse response; 

     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 

     if (entity != null) { 

      InputStream instream = entity.getContent(); 
      result = convertStreamToString(instream); 
      result = result.replaceAll(""", "\""); 

      JSONObject json=new JSONObject(result); 
      JSONArray nameArray=json.names(); 
      JSONArray valArray=json.toJSONArray(nameArray); 
     endif 
      nstream.close(); 
     } 


    } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } catch (JSONException e) { 
     } 
     } 
} 

주석 처리 된 URL을 사용할 때 작동합니다. 누군가 두 개의 새로운 값을 추가하면 충돌이 발생하는 이유를 알 수 있습니까? 문자열의 크기 일 수 있습니까?

+0

당신은 왜 따옴표가 GET 요청의 URL에가 오류 시나리오 – curious

+0

에 대한 로그 캣을 인쇄 할 수 있습니까? –

+0

이후 나는 따옴표를 제거하고 아무런 차이가 없습니다. Logcat의 출력은 아마도 도움이되지 않지만 여기서는 java.lang.reflect.Method.invokeNative (기본 메소드) – user616076

답변

0

따옴표를 처리하려면 URL을 인코딩해야합니다.

String encodedUrl = URLEncoder.encode(url, "UTF-8"); 
+0

당신의 도움에 감사드립니다, 나는 당신의 제안을 시도했고 이제는 httpGet을 지나치지만, 응답으로 = httpclient.execute (httpget); 메시지는 대상 호스트가 null이 아니거나 매개 변수에 설정되어서는 안됩니다. 인코딩을 사용하지 않고 일반 URL을 사용하지 않으면 색인 93에서 쿼리의 잘못된 문자 메시지와 충돌이 발생하고 브라우저에서 사용할 경우 URL이 추가됩니다! 어떤 도움도 많이 받으 셨습니다. – user616076

+0

url = url + "? maddr ="+ mailAddr + "& pwd = FB & lect ="+ URLEncoder.encode ("+ lectName +"\ "", "UTF-8") + "& fb = "+ URLEncoder.encode ("\ ""+ feedback + "\" ","UTF-8 "); – kgu87

+0

사실, mailAddr도 인코딩합니다. – kgu87