私はJSONについてほとんど何も知っていないので、iPhoneのみを使用してサーバーにリクエストを送信し、そこからデータを読み込む必要があります。JSON IPHONE:JSONリクエストを送信してサーバーからデータを取得する方法は?
私はjason-framework を使用しようとしましたが、ドキュメントを読み終えた後、オブジェクトを作成してリクエストで送信する方法を見つけることができませんでした。だから私はここで見た別のコードをSOに適用することに決めました。
私が必要とするオブジェクトはこれです:
{ "コード":XXX}ここで
私は問題を抱えています。このxxxはNSDataなので、このデータを文字列に変換してからこの文字列を使用してオブジェクトを作成し、リクエストでこれを送信する必要があると思われます。
サーバ応答もJSONオブジェクトでは、フォームで
{「回答」:「YYY」} YYYは10000と99999
の間の数であり、これは私が持っているコードであります遠い
- (NSString *)checkData:(NSData) theData {
NSString *jsonObjectString = [self encode:(uint8_t *)theData length:theData.length];
NSString *completeString = [NSString stringWithFormat:@"http://www.server.com/check?myData=%@", jsonObjectString];
NSURL *urlForValidation = [NSURL URLWithString:completeString];
NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation];
[validationRequest setHTTPMethod:@"POST"];
NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil];
[validationRequest release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];
NSInteger response = [responseString integerValue];
NSLog(@"%@", responseString);
[responseString release];
return responseString;
}
- (NSString *)encode:(const uint8_t *)input length:(NSInteger)length {
static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
NSMutableData *data = [NSMutableData dataWithLength:((length + 2)/3) * 4];
uint8_t *output = (uint8_t *)data.mutableBytes;
for (NSInteger i = 0; i < length; i += 3) {
NSInteger value = 0;
for (NSInteger j = i; j < (i + 3); j++) {
value <<= 8;
if (j < length) {
value |= (0xFF & input[j]);
}
}
NSInteger index = (i/3) * 4;
output[index + 0] = table[(value >> 18) & 0x3F];
output[index + 1] = table[(value >> 12) & 0x3F];
output[index + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
output[index + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
}
ret
urn [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
}
このコードはすべてエラーです。またはBAD URLまたはjava例外。
このコードで何が問題になっていますか?
あなたたちはJSON-フレームワークを使用して、別の解決策を与えることを希望する場合(「ここに私のNSDataを文字列に変換」、「コード」)というペアを使用してオブジェクトをエンコードする方法を教えてください...
感謝助けを求めて
感謝を!!!!!!それでおしまい!ASIHTTPRequestライブラリのドキュメントはかなり不完全で表面的です(あなたのせいではありません)が、あなたの指示を使って動作させることができました。完璧!あなたはD男です! – SpaceDog
それはあなたのために働いてうれしい。 ASIHTTPRequestをあきらめないでください。一度あなたがそれを取得するとかなり簡単です。唯一のことは、setDidFinishSelector/setDidFailSelectorメソッドを提供し、ネットワークに障害が発生したときに通知を受け取るようにデリゲートを設定することを忘れないでください。あまりにも多くのセルデッドゾーンがあります。 – Ramin