2012-12-09 51 views
0

當我的應用程序已經使用相同的代碼在多年的地方發送電子郵件地址和密碼,我的JSON Web服務的網站,然後獲取給定的信息。我現在試圖發送一些額外的信息用於更新目的,但是當我添加兩個額外的值時,應用程序崩潰。應用程序崩潰的HTTPGET(URL)試圖發送到JSON

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

您可以打印錯誤場景的logcat – curious

+0

爲什麼GET請求的URL中有引號? –

+0

我已經刪除了引號,並沒有區別。在java.lang中\t:從logcat的輸出可能不會幫助,但在這裏它是E/AndroidRuntime(638):\t在java.lang.reflect.Method.invokeNative(本機方法) – user616076

回答

0

你需要編碼URL處理引號。

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

感謝您對這個您的幫助,我想你的建議,現在我得到過去的HTTPGET但它崩潰的幾行後上線與響應= httpclient.execute(HTTPGET);消息是目標主機不能爲空或在參數中設置。如果我不使用編碼並使用普通網址,它會在索引93處使用查詢中的非法字符消息崩潰,然後添加如果我在瀏覽器中使用的網址正常工作!任何幫助非常感謝 – user616076

+0

URL = URL + 「?MADDR =」 + mailAddr + 「&PWD = FB&LECT =」 + URLEncoder.encode( 「\」 「+ lectName + 」\「」, 「UTF-8」)+「&FB = 「+ URLEncoder.encode(」\「」+ feedback +「\」「,」UTF-8「); – kgu87

+0

實際上,編碼mailAddr以及:) – kgu87

相關問題