سؤال

أنا أستخدم حزمة 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];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top