2011-06-22 144 views
0

我想從android手機發送信息到服務器。Android上的Http發佈:服務器請求和響應

當服務器收到信息時,它發回1或0來表示通過或失敗。服務器端的一切都很好,因爲在iOS的另一個應用程序中執行相同的事情,但它的工作原理。當服務器收到請求時,它也會發送一封電子郵件。

我的問題是,它似乎並不像應用程序正在聯繫服務器。當我運行應用程序時,不會回覆任何響應,並且一旦執行Http Post代碼就不會發送電子郵件。

我有下面的Http Post代碼,非常感謝您的幫助。

public void send() 
     { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(site); 

      try { 
       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("dateOfEventStart", startYear + "-" + startMonth + "-" + startDay)); 
       nameValuePairs.add(new BasicNameValuePair("dateOfEventEnd", endYear + "-" + endMonth + "-" + endDay)); 
       nameValuePairs.add(new BasicNameValuePair("locationType", locType)); 
       nameValuePairs.add(new BasicNameValuePair("locationZipCode", location)); 
       nameValuePairs.add(new BasicNameValuePair("eventType", type)); 
       nameValuePairs.add(new BasicNameValuePair("groundSurface", groundType)); 
       nameValuePairs.add(new BasicNameValuePair("numberOfGuests", numGuests + "")); 
       nameValuePairs.add(new BasicNameValuePair("seatingArrangments", arrangement)); 
       nameValuePairs.add(new BasicNameValuePair("accessoriesTables",stuff)); 
       nameValuePairs.add(new BasicNameValuePair("estimatedArea", tent)); 
       nameValuePairs.add(new BasicNameValuePair("estimatedRoomToSpare", spared)); 
       nameValuePairs.add(new BasicNameValuePair("contactName", nameA)); 
       nameValuePairs.add(new BasicNameValuePair("contactPhone", phoneA)); 
       nameValuePairs.add(new BasicNameValuePair("contactEmail", addressA)); 
       nameValuePairs.add(new BasicNameValuePair("contactComments", comment)); 
       nameValuePairs.add(new BasicNameValuePair("isInternational", isInternational + "")); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 
       responseString = response.toString(); 


      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
      } 

     } 

網站是早些時候宣佈的變量。它是一個包含表單接收器的位置的字符串

也低於是我得到了有關服務器的信息

您將與(最有可能)一個「內容 - 發送一個「POST」請求鍵入「application/x-www-form-urlencoded」。

「POST」的內容將是一個格式與網站網址的「查詢>字符串」類似的字符串。 (如果你不熟悉它們,這就是問號後面的內容。)

在這個字符串中,有些鍵和值之間用等號連接。鍵/值對由>符號分隔(&'s)。

這是我在ASP用於測試服務,如果它有助於(具有>添加用於可讀性回車)的字符串的一個例子:

strContent =「dateOfEventStart = 2011-09-24

& dateOfEventEnd = 2011-09-26

&的locationType = 「& Server.URLEncode( 」住宅「)&」

& locationZipCode = 38016

& EVENTTYPE = 「& Server.URLEncode( 」企業活動「)& 」

& eventTypeSecondary =

& groundSurface =「 & Server.URLEncode(」 碎石(超過污垢) 「)&」

& groundSurfaceSecondary =

& numberOfGuests = 90個

& seatingArrangements =」 &服務器。的URLEncode( 「6位客人回合表」)& 「

& accessoriesTables =」 & Server.URLEncode( 「自助,蛋糕,禮品,飲料站」)&「

& accessoriesEntertainment =

& estimatedArea =「& Server.URLEncode(」1200平方英尺「)&」

& estimatedTentSize =「& Server.URLEncode( 「30英尺×40英尺或20英尺×60英尺」)& 「

& estimatedRoomToSpare =」 & Server.URLEncode( 「0平方英尺或0平方英尺」)&「

& CONTACTNAME = 「& Server.URLEncode( 」喬納森陳「)&」

& contactPhone = 9011234567

& contactEmail =」 & Server.URLEncode( 「[email protected]」)& 「

& contactComments =」 & Server.URLEncode( 「這是一個長註釋」。)

以我ASP例如你可能已經注意到了「Server.URLEncode」周圍的字符串。這是>所以某些可能會混淆數據的字符會被編碼爲%十六進制ASCII>值。例如,如果有人輸入「我喜歡芝士&蛋糕」作爲他的評論,該程序>會認爲該&符號表示新的鍵/值對。如果我們對網址進行編碼,它會顯示爲「I%20love%20cheese%20%26%20cake」。

回答

2
  1. 看看有哪些錯誤的logcat的文件
  2. 檢查是否已包含在您的清單文件中的Internet權限。
+0

好吧,我檢查的權限,以及Internet權限不在那裏,我補充道。它現在與服務器進行通信,但表單不能正常工作。它收到字符串,但似乎沒有處理它 – Zaask