0

サーバーにjsonデータを送信していますが、エラーが発生します

json-

  • {GETDatetime = "/ Date(1354119549)/"; }

エラー -

  • サーバーでリクエストの処理中にエラーが発生しました。例外メッセージは'SqlDateTimeオーバーフローです。1/1/175312:00:00AMから12/31/999911:59:59PMの間にある必要があります。

obj-cのコード

NSString* json = [dict JSONRepresentation];
//NSString *myRequestString = @"param="; // Attention HERE!!!!
//myRequestString = [myRequestString stringByAppendingString:json];
NSURL *url = [NSURL URLWithString:reqUrlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];


NSData *requestData = [NSData dataWithBytes:[json UTF8String] length:[json length]];

[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
4

2 に答える 2

1

答えは、タイムスタンプを作成するときに1000を掛けないことです(提供したリンクのように)。

1354119549233 は、44880 年 5 月 3 日金曜日 23:13:53 GMT です。

1354119549 は 2012 年 11 月 28 日水曜日 16:19:09 GMT です

于 2012-11-28T17:15:03.603 に答える
0

日付を Web サービスに渡す方法 (および相互に Web サービスから渡す方法) は次のとおりです...

NSDate *someDate = [NSDate date];

// get the serverDateFormat in an initial transaction with the server
// or, simpler and more brittle, hardcode something like the following ...
NSString *serverDateFormat = @"yyyy-MM-dd'T'HH:mm:ss'Z'";

// prepare a date formatter.  i allocate and hang onto this at init, but
// you can just do this inline to get started...
_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setDateFormat:serverDateFormat];
[_dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

// this is in a category method on NSDate called asHttpParam, but the code
// here works fine to get started. the following gets the date ready to pass to server...
NSString *dateParam = [_dateFormatter stringFromDate:someDate];

あなたが参照したSO日付ソリューションには、日付のエポックベースに関するあいまいさ、ローカル調整へのハードコーディングされたGMTなど、いくつかの問題があります。対照的に、dateParam は、クライアントのタイムゾーンに関係なく、明確な絶対日付です。

dateParam をリクエストに追加します。% エンコーディング、コンテンツの長さの設定などがあります。

サーバー側は、日付を日付に解析する必要があります。Rails では、上記のフォーマット文字列を使用すると、次のような日付解析が行われます...

the_date_param = DateTime.parse(params[:the_date_param])
于 2012-11-28T18:10:03.743 に答える