2009-10-12 29 views
29

đã đấu vật với điều này một thời gian. Tôi đang cố gắng truy cập vào một api REST trên iphone của tôi và đi qua khung ASIHTTP sẽ hỗ trợ tôi. Vì vậy, tôi đã làm một cái gì đó giống nhưMục tiêu-C: Cách tốt nhất để truy cập REST API trên iphone của bạn

//call sites, so we can confirm username and password and site/sites 
NSURL *url = [NSURL URLWithString: urlbase]; 
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease]; 
[request setUsername:@"doronkatz%40xx.com" ]; 
[request setPassword:@"xxx"]; 

đâu urlbase là một url vào một trang web REST.

Bây giờ, một nhà phát triển đã nói với tôi rằng có thể có sự cố hoặc lỗi với khuôn khổ này và không vượt qua tiêu đề của nó một cách chính xác. Có cách nào khác để kiểm tra hoặc truy cập với xác thực vị trí REST mạng không?

+1

+1 Sau câu hỏi này, tuy nhiên, bạn cần định dạng mã của mình để SO có thể hiển thị chính xác. Tôi không thể chỉnh sửa nếu không, nhưng đặt 4 dấu cách trước mỗi dòng mã của bạn và nó sẽ trông giống như mã. –

+0

Xin lỗi bạn đời bị bệnh trong tương lai – Doz

+0

http://github.com/sdegutis/CocoaREST – indragie

Trả lời

31

Tôi khuyên bạn nên kiểm tra RestKit: http://restkit.org/ Nó cung cấp API tuyệt vời để truy cập các dịch vụ web RESTful và đại diện cho tài nguyên từ xa làm đối tượng địa phương, bao gồm cả lưu trữ dữ liệu lõi. Xác thực HTTP được hỗ trợ ra khỏi hộp.

+2

bằng 0.20.0 cách xác thực cơ bản được thực hiện? Các ví dụ duy nhất tôi có thể tìm thấy liên quan đến 'RKClient' nhưng điều này đã được gỡ bỏ trong 0.20.0. giúp đỡ của bạn được rất nhiều đánh giá cao. –

6

Tôi có một vài ứng dụng sử dụng khung được gọi là Objective Resource cung cấp trình bao bọc để truy cập vào api dựa trên REST từ xa. Nó chủ yếu nhằm vào các ứng dụng dựa trên Ruby on Rails do đó việc phân tích cú pháp XML/JSON có thể được điều chỉnh để xử lý một số giá trị mặc định của Rails nhưng nó đáng xem. Nó hỗ trợ xác thực cơ bản http theo mặc định.

1

Tôi đã sử dụng ASIHTTP trong hai ứng dụng cho đến thời điểm này và không gặp vấn đề gì.

Có vẻ như bạn đang thực hiện Xác thực cơ bản HTTP với trang web từ xa. Hãy thử nhấn cùng một URL REST từ trình duyệt chuẩn và chuyển các tham số bạn cần đến. Nó sẽ nhắc bạn cho tên người dùng/mật khẩu. Nếu nó làm cho nó thông qua, thì ít nhất bạn biết phía máy chủ được thiết lập để xử lý các yêu cầu. Nếu không, thì bạn cần phải nói chuyện với nhà phát triển.

Điều tiếp theo cần thử là đặt trình thám thính mạng dựa trên máy Mac và xem tiêu đề nào sẽ chuyển qua lại. Mọi HTTPScoop, Wireshark hoặc Charles đều hoạt động. Chạy trình thám thính dưới dạng proxy mạng rồi chạy ứng dụng của bạn trong trình mô phỏng và xem những gì xảy ra. Hãy thử lại bằng trình duyệt. Khi bạn thấy sự khác biệt, bạn có thể sử dụng phương thức addRequestHeader trên ASIHTTPRequest để thêm bất kỳ tiêu đề cụ thể nào mà máy chủ mong đợi.

+0

Hi Ramin ive đã thử sử dụng ASIHTTPRequest, ngay cả với api Twitter để xem tôi có thể có được một tiêu đề để làm việc, bằng cách sử dụng addRequestHeader và sử dụng HTTPScoop nhưng nó không cho thấy các tiêu đề đang được truyền cho nó. – Doz

+0

Bạn muốn tìm tiêu đề nào? Và khi bạn nhấn cùng một URL với trình duyệt, bạn có nhận được những gì bạn đang tìm kiếm trong HTTPScoop không? Nếu bạn đang nhận được tiêu đề từ trình duyệt nhưng không phải trong ASIHTTP, thì bạn có thể muốn gửi báo cáo lỗi với nhà phát triển. – Ramin

+0

Vâng cho một trong các trang web im làm việc trên, với HTTPSchool im nhận được một phản ứng nói rằng xác thực cần thiết. Với Twitter, tôi có thể đặt tên người dùng và mật khẩu trong tệp URL, nhưng khi tôi đặt nó là addRequestHeader HTTPSchoop không hiển thị rằng tôi đã đặt bất kỳ tiêu đề nào. Đó là lý do tại sao im tự hỏi phải có một cái gì đó với ASIHTTP. – Doz

2

Chỉ cần vấp vào câu hỏi này - bạn có thể thấy LRResty khá thú vị vì nó sử dụng NSOperation, khối vv, xem: GitHub cho nguồn (giấy phép MIT). Tôi đang thử nghiệm với nó ngay bây giờ - nó cũng có một ứng dụng mẫu.

10

Tôi mới phát triển iOS và tôi đã chiến đấu với một số khung công tác lớn được liệt kê trên trang này trong một tháng qua. Nó đã là một cơn ác mộng. Tôi thực sự khuyên bạn chỉ nên tuân theo những điều cơ bản và tự mình làm việc bằng cách sử dụng AFNetworking hoặc của riêng mình NSURLConnection.

Một trong các thư viện được liệt kê không còn được duy trì. Một điều khác đã trải qua thay đổi mã đột phá API gần đây và bây giờ một nửa các hướng dẫn mô tả việc sử dụng nó không còn hoạt động nữa. Những người khác đang ồ ạt ồ ạt.

Dễ hơn bạn nghĩ. Một số tài nguyên đã giúp tôi:

Các ví dụ trên chỉ riêng ở AFNetworking homepage có thể giúp bạn có được 80% con đường đó.

CẬP NHẬT: Mantle Framework (mã nguồn mở của Github Inc.) được thiết kế tốt và dễ sử dụng. Nó xử lý ánh xạ đối tượng: chuyển đổi JSON NSDictionary thành các lớp mô hình Objective-C tùy chỉnh của riêng bạn. Nó xử lý các trường hợp mặc định một cách hợp lý và thật dễ dàng để cuộn các biến thế giá trị của riêng bạn, ví dụ: từ chuỗi đến NSURL hoặc chuỗi đến tùy chỉnh enum của bạn.

Các vấn đề liên quan