こんにちはFrndsこれは、iPhone用のXcodeで正しく使用されているコードですが、問題はこれは私がアンドロイド開発用に同じURLと同じjsonを使用している間です午前: -Android用のJSONの問題を解析する
{"code":"400","message":"Failed loading JSON. Special characters must not be included in the request. Please check the requested JSON."}
私はここに私が見つけていないマイナーな技術的な問題と思う。 私はアンドロイド開発の新人です。私はそれを過去15日間から1000回試して、挫折しています。 :-(:-((-((:-((:-((:-((:-((--( 誰でも私にアンドロイド用の完全なコードの完全なソリューションを提供できますか? 。
iPhone用のコードです:
NSURL *url = [NSURL URLWithString:@"http://www.invoicera.com/app/api/check_json_api.php?token=7B92C122473A3D6F54E60D20AC5526D0"];
NSString *jsonRequest = [NSString stringWithFormat:@"&json_data=%@",[[NSString stringWithFormat:@"{\"listInvoice\":{\"client_id\":\"\",\"date_from\":\"\",\"date_to\":\"\",\"invoice_number\":\"\",\"invoice_record_status\":\"\",\"invoice_status\":\"\",\"page\":\"1\",\"per_page_record\":\"20\"}}"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"%@",jsonRequest);
NSData *json_data = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];
NSLog(@"%@",json_data);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: json_data];
NSLog(@"%@",json_data);
// [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [json_data length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:[[jsonRequest stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]
dataUsingEncoding:NSUTF8StringEncoding
allowLossyConversion:YES]];
// [NSURLConnection connectionWithRequest:[要求の自動リリース]デリゲート:自己];
NSURLConnection *nsUrlConnection=[[NSURLConnection alloc]
initWithRequest:request
delegate:self];
// Successful connection.
if (nsUrlConnection) {
// [self initSpinner];
// [self spinBegin];
NSMutableData *data = [[NSMutableData alloc] init];
self.receivedData=data;
[data release];
}
// Unsuccessful connection.
else {
}
// Clean up
[url release];
[request release];
このコードを書いた後、私は完璧な応答を取得ミリアンペアしかし、どのように私はアンドロイド開発のためのサーバーから同じ応答を得ることができます。アンドロイドの完全なコードとテソリューション。
{"@attributes":{"status":"200"},"invoices":{"@attributes":{"page":"1","per_page_record":"20","total_pages":"13","total_records":"246"},"invoice":[{"client":{"client_id":"421","organization":"max styles","address":"H-189,Vasundhara","billing_address":{"street":"H-189,Vasundhara","city":{},"state":{},"zip":........................etc etc etc.
これはアンドロイドコード:
public class JSONParser {
String s1 = "{\"listInvoice\":{\"client_id\":\"\",\"date_from\":\"\",\"date_to\":\"\",\"invoice_number\":\"\",\"invoice_record_status\":\"\",\"invoice_status\":\"\",\"page\":\"1\",\"per_page_record\":\"20\"}}";
public String payload;
public JSONParser(String[]array) {
this.payload = null;
}
public void excuteHttpPost() throws Exception {
BufferedReader in = null;
try {
// Creating HTTP client
JSONObject listobj = new JSONObject();
JSONObject listInvoice = new JSONObject();
listInvoice.put("client_id","");
listInvoice.put("date_from","");
listInvoice.put("date_to","");
listInvoice.put("invoice_number","");
listInvoice.put("invoice_record_status","");
listInvoice.put("invoice_status","");
listInvoice.put("page","1");
listInvoice.put("per_page_record","10");
listobj.put("listInvoice", listInvoice);
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(ConstantList.invoicelistURL);
List<NameValuePair> postParameters = new ArrayList<NameValuePair>(1);
postParameters.add(new BasicNameValuePair("json_data", s1));
Log.d("Http Response:", postParameters.toString());
// Build JSON string
request.setHeader("Content-type", "application/x-www-form-urlencoded");
request.setEntity(new UrlEncodedFormEntity(postParameters));
HttpResponse response = client.execute(request);
// writing response to log
Log.d("Http Response:", response.toString());
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line+NL);
}
in.close();
payload = sb.toString();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
あなたの質問は、あなたが代わりにあなたのAndroidの努力を掲載場合答えるために多くの方が簡単だろう。そのようにして、私たちはあなたのためのコードを書く_はるかに大きな努力とは対照的に、1つか2つのバグを指摘することができました。 –
@ Paul-Jan私のAndroidのコードを更新してください私のコードの完全な最終解決を見つけてください私は非常に非常に不満です:-( –