你可以參考我下面的示例代碼:
更新您的引擎收錄鏈接:
由於服務器響應的JSONArray
,我用JsonArrayRequest
代替JsonObjectRequest
。並且不需要覆蓋getBody
了。
mTextView = (TextView) findViewById(R.id.textView);
String url = "https://api.orange.com/datavenue/v1/datasources/2595aa553d3049f0b0f03fbaeaa7ddc7/streams/9fe5edb1c76e4968bdcc9c902010bc6c/values";
RequestQueue requestQueue = Volley.newRequestQueue(this);
final String jsonString = "[\n" +
" {\n" +
" \"value\": 1\n" +
" }\n" +
"]";
try {
JSONArray jsonArray = new JSONArray(jsonString);
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, url, jsonArray, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
mTextView.setText(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText(error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
headers.put("X-OAPI-Key","TQEEGSk8OgWlhteL8S8siKao2q6LIGdq");
headers.put("X-ISS-Key","2b2dd0d9dbb54ef79b7ee978532bc823");
return headers;
}
};
requestQueue.add(jsonArrayRequest);
} catch (JSONException e) {
e.printStackTrace();
}
我的代碼同時適用於谷歌的官方凌空libray和mcxiaoke圖書館
如果你想使用谷歌的圖書館,你的Git克隆作爲谷歌文檔後,從\src\main\java\com
複製的Android文件夾到你的項目爲下面的截圖中\app\src\main\java\com
(你克隆排球項目):
的build.gradle
應包含以下
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.google.code.gson:gson:2.3.1'
}
如果你的項目使用mcxiaoke的圖書館,在build.gradle
將類似於以下(注意dependencies
):
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.example.samplevolley"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.mcxiaoke.volley:library:1.0.17'
compile 'com.google.code.gson:gson:2.3'
}
我建議您將創建2個新的示例項目,然後將使用Google的圖書館,另一個將使用mcxiaoke的圖書館。 UPDATE OF
END
String url = "http://...";
RequestQueue requestQueue = Volley.newRequestQueue(this);
final String jsonString = "[\n" +
" {\n" +
" \"value\": 1\n" +
" }\n" +
"]";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// do something...
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something...
}
}) {
@Override
public byte[] getBody() {
try {
return jsonString.getBytes(PROTOCOL_CHARSET);
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",
jsonString, PROTOCOL_CHARSET);
return null;
}
}
};
requestQueue.add(jsonObjectRequest);
下面的截圖是領受的服務器端Web服務:
來源
2015-09-25 06:13:50
BNK
閱讀[我asnwer這裏(http://stackoverflow.com /問題/ 32197615 /抽射,發送-的JSONObject到服務器與 - 法柱/ 32216762#32216762)。但是,您的json是JSONArray,而不是JSONObject。 – BNK
你可以更明白嗎?我仍然無法編碼這個jsonArray ...謝謝你的理解 – fujitsu4
JSONObject jsonBody = new JSONObject(「{\」value \「:1}」); JSONObject以{開始並以}結尾。而且,你得到了什麼錯誤信息?請發佈它和任何logcat信息(如果可用)。 – BNK