[英]Send data to asp.net server using volley android
我想從我搜索過volley的Android應用程序中將數據發送到服務器,並在下面編寫了代碼,但是它無法正常工作,您能幫我解決一下嗎?
我使用地圖獲取數據,然后提取鍵並將它們放入字符串數組:
keys=new String[data.size()];
data.keySet().toArray(keys);
之后,我發出這樣的請求:
for (int i=0;i<data.size();i++) {
requestJsonObject.put(keys[i], data.get(keys[i]));
}
這是完整的代碼:
public class ApiPostData {
private static final String TAG = "PostData";
private String url;
private HashMap<String,String> data=new HashMap<>();
String[] keys;
public String getUrl() {
return url;
}
public ApiPostData setData(HashMap<String, String> data) {
this.data = data;
return this;
}
public ApiPostData setUrl(String url) {
this.url = url;
return this;
}
public void PostData(final OnSetSettingComplete onSetSettingComplete) {
JSONObject requestJsonObject = new JSONObject();
try {
keys=new String[data.size()];
data.keySet().toArray(keys);
for (int i=0;i < data.size(); i++) {
requestJsonObject.put(keys[i], data.get(keys[i]));
}
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, requestJsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
int success = response.getInt("statusCode");
onSetSettingComplete.onResponse(success);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
request.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(G.context).add(request);
} catch (JSONException e) {
Log.e(TAG, "EpostData: " + e.toString());
}
}
public interface OnSetSettingComplete {
void onResponse(int success);
}
}
建議使用okhttp
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormEncodingBuilder().add("key1","value1").add("key1","value2").add("key3","valu e3").build();
Request request = new Request.Builder()
.url("URL HERE")
.addHeader("Some Headers Here", "Header Values Here")
.addHeader("Some Headers Here", "Header Values Here")
.post(body)
.build();
Response response = client.newCall(request).execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.