我想從我的服務器發送一個圖像與我的發佈數據到我的服務器。爲了完成這個我base 64編碼我的圖像字符串,並使用android volley庫發送它。儘管如此,這會造成問題。出於某種原因,它有時會發送兩次帖子,我無法弄清楚原因。以下是被調用來發送發佈請求的功能。我在String url = "http://domain.com/ajax_ws.php";
,然後在protected Map<String, String> getParams() {
打破分數我發現是String url = ...
只被調用一次,但當它發送兩個時,protected Map...
被調用兩次。我找不到有關android volley的任何文檔,所以我不知道爲什麼會發生這種情況。位圖被調整大小,以便圖像字符串始終保持在100k到200k之間。我想也許這是一個尺寸問題,但我的服務器正在接收圖像和解碼他們,一切都很好。Android凌空發送信息兩次,圖像上傳
public void Sharing() {
pd = ProgressDialog.show(getParent(), null, "Please Wait...");
final String caption = mEtMessage.getText().toString();
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://domain.com/ajax_ws.php";
StringRequest postRequest = new StringRequest(
Request.Method.POST,
url,
new MyStringListener(),
new MyErrorListener()
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("token", "secretToken");
params.put("mode", "createVoucher");
params.put("user_id", ActivityLogin.id);
params.put("deal_id", ActivitySharing.id_deal);
params.put("user_id_company", ActivityRestaurantDetails.res.getId());
params.put("user_img", pathImage);
params.put("caption", caption);
params.put("company_id", ActivityRestaurantDetails.res.getId());
return params;
}
};
queue.add(postRequest);
}
任何想法爲什麼會發生這種情況?
只是一個建議:這將是很好的提取匿名'Response.Listener'來分離(內部?)類來簡化事情,並使您的代碼更具可讀性。它現在非常混亂,並使您的屏幕的一半覆蓋縮進。 –
@Secator謝謝,我會這樣做的,這段代碼已經通過了絞刑機,它遍佈各處。 – tomjung
我正面臨着確切的問題。我的進一步調查表明,它處理任何緩慢的連接。我試圖調試Volley庫,並發現了一個模式,該post模式是由BasicNetwork類中的SocketTimeoutException在「performRequest(請求>請求)」方法中引起的。每次發生異常時,都會發生雙重帖子。不幸的是我沒有任何解決方案。讓我知道你的想法。而且,我沒有看到這與RetryPolicy相關。你放在RetryPolicy上的任何數字都不會影響解決這個問題。 –