私は drupalベースの Web サイトのクレート アプリケーションに取り組んでいます。ここでは、アプリケーションから Web サーバーへの投稿ページの問題に直面しています。
タイトルと本文を投稿すると、タイトルのみがサーバーに表示されますが、本文は表示されません。ここで、本文の一部をjson
フォーマットします。
以下のJSON形式は、Firefoxのポスタープラグインで完全に機能し、データをサーバーに正常に書き込むので、同じタスクのAndroidコードを書くことが私の質問です。
{
"type":"page",
"title":"TITLE TESTING",
"body":{
"und":[
{
"value":"BODY TESTING"
}
]
}
}
私はこのように試しました:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("type","page"));
params.add(new BasicNameValuePair("title",title));
params.add(new BasicNameValuePair("body", ""+jSONCategory.toString()));
// value of the jSONCategory.toString() : {"und":[{"value":"body_part"}]}
System.out.println("============@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"+params);
パラメータの値を出力すると、次のように表示されます。
[type=page, title=title_part, body={"und":{"value":"body_part","format":"full_html"}]}]
そして、ボディ部分のみを渡すと、ステータス コード 406が返され、タイトルの場合はステータス コード 200で完璧に動作します
ここで私の質問は、文字列と jsonの両方を組み合わせてサーバーに渡す方法です。ここでタイトル部分String variable
は json 変数で、ボディ部分はenter code here
ありがとう。
編集:
JSONCategory = new JSONObject();
JSONBody = new JSONObject();
JSONObject Jsonvalue = new JSONObject();
Jsonvalue.put("value", body);
JSONArray jsonUnd = new JSONArray();
jsonUnd.put(Jsonvalue);
JSONCategory.put("und", jsonUnd);
JSONBody.put("type", "page");
JSONBody.put("title", title);
JSONBody.put("body", JSONCategory);
System.out
.println("WHOLE JSON OBJECT ====================>"
+ JSONBody.toString());
ログキャット:
WHOLE JSON OBJECT ====================>{"type":"page","body":{"und":[{"value":"body"}]},"title":"title"}
JAVA コード
@Override
public Void doInBackground(Void... params) {
// TODO Auto-generated method stub
String url = "url here";
// strResponse1= postData(url,title,JSONCategory);
postData(url, JSONBody);
System.out.println("=========> Response from post idea => "
+ strResponse1);
return null;
}
-------------------------------------------------------------------------------
protected void postData(final String url, final JSONObject mainJSON) {
Thread t = new Thread(){
public void run() {
Looper.prepare(); //For Preparing Message Pool for the child Thread
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
try{
HttpPost post = new HttpPost(url);
StringEntity se = new StringEntity(mainJSON.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/*Checking response */
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
}
}
catch(Exception e){
e.printStackTrace();
//createDialog("Error", "Cannot Estabilish Connection");
}
Looper.loop(); //Loop in the message queue
}
};
t.start();
}