Objective -C و AsiHtprequest - مشاكل سلسلة الاستجابة
-
05-07-2019 - |
سؤال
أنا أستخدم حزمة ASIHTPRequest لإرسال بعض البيانات من iPhone إلى الخادم الخاص بي ، ثم عند حفظها على الخادم ، أتلقى استجابة (سلسلة) تحتوي على عنوان URL الذي أريد تحميله في عرض الويب. من الناحية النظرية ، يجب أن يكون هذا بسيطًا ، لكن في الواقع لا يمكنني الحصول على هذا العمل على الإطلاق. يبدو أن بعض المشكلات في ترميز السلسلة على ما أعتقد. إذا قمت بإخراج الاستجابة ، فيبدو أنه جيد تمامًا ، لكنه يرفض فقط تحميله في WebView.
هذا هو طلبي (كنت ألعب بالضغط والترميز):
NSURL *url = [NSURL URLWithString:@"xxx"];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setFile:imageData forKey:@"photo"];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[request setAllowCompressedResponse:NO];
[request setDefaultResponseEncoding:NSUTF8StringEncoding];//NSISOLatin1StringEncoding
[request start];
وهذا هو المستجيب الخاص بي:
- (void)requestDone:(ASIHTTPRequest *)request{
NSString *response = [request.responseString];
NSLog(@"web content: %@", response);
[webView loadSite:response];
}
يبدو NSLOG جيدًا ، لكن الموقع لن يتم تحميله. حاول إرسال متغير NSString مثل NSString *temp = @"http://www.google.se"؛ إلى وظيفة الأحمال والتي تعمل بشكل جيد ، وبالتالي فإن المشكلة ليست مع التحميل نفسه.
من شأنه أن يثبت أي مؤشرات أو مساعدة في غابة OBJ-C :)
/F
المحلول
حاول أن تفعل ما يلي:
NSString *response = [[request responseString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
سوف تقطع جميع المساحات البيضاء والخطوط الجديدة.
نصائح أخرى
so turns out that a response is automatically ended with a \n (new linebreak). this didn't show up when logging the variable, neither when writing it to a textfield but when converting it to a urlobject and logging that i found it. debugging once again pays off ;)
woups, my responder is of course:
- (void)requestDone:(ASIHTTPRequest *)request{
NSString *response = [request responseString];
NSLog(@"web content: %@", response);
[webView loadSite:response];
}