好了,所以C#代碼的HTTP POST工程(該函數返回TRUE
,意味着響應串「OK
」,那就是:HTTP POST不工作(C#代碼的工作和Java代碼是不是)
public bool Rank(int rank)
{
System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
string postData = "";
InvokeOnMainThread(delegate(){
postData="pass=somePass&request=someRequest&access_key="+((FBTabBarController)TabBarController).AAMAccessKey+"&pid="+place_id+"&rank="+rank.ToString();
});
byte[] data = encoding.GetBytes(postData);
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("someURL");
myRequest.Method = "POST";
myRequest.ContentType="application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream=myRequest.GetRequestStream();
// Send the data.
newStream.Write(data,0,data.Length);
newStream.Close();
HttpWebResponse hwr =(HttpWebResponse) myRequest.GetResponse();
StreamReader reader = new StreamReader(hwr.GetResponseStream());
string res = reader.ReadToEnd();
if(res=="OK")
return true;}
else if(res == "FAILED") return false;
return false;
}
而這裏的不工作(該函數返回FALSE
爲相同的參數上面的代碼Java代碼,響應串是:NULL
:
public boolean SubmitRank(String URL)
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
Log.d("MyTag","id: " + place_id + "rank: " + rank);
nameValuePairs.add(new BasicNameValuePair("pass","somePass"));
nameValuePairs.add(new BasicNameValuePair("request","someRequest"));
nameValuePairs.add(new BasicNameValuePair("accesskey",shareAppPreferences.getAccessKey()));
nameValuePairs.add(new BasicNameValuePair("pid",place_id));
nameValuePairs.add(new BasicNameValuePair("rank",rank));
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
try {
HttpResponse response = httpclient.execute(httppost);
String resString = EntityUtils.toString(response.getEntity());
if(resString.equals("OK")){
return true;
}
else if(resString.equals("FAILED")){
return false;
}
return false;
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return false;
}
爲什麼JAVA代碼不在C#代碼正在工作的同時工作?我錯過了上述要求中的任何內容?
定義不工作?你會得到什麼異常或意外的服務器響應? – Perception
返回的狀態碼是什麼(通過response.getStatusLine()方法獲得,如果這是您的示例中使用的Apache HttpResponse類)。 – Neeko
@Perception我沒有收到任何異常,只是返回的字符串是空白的,而不是「OK」,因爲它應該是。 – idish