Efter ett tags hackande har jag fått ihop så att min iPhone app pratar fint med mitt backend via REST paradigmet. Ett par läxor har framkommit under resan fram tills nu.
Den första är att se till att det backend man vill jobba mot antingen är helt klart eller att man vet att det kan göra det som behövs. Anledningen till att jag skriver detta är för att jag började göra ett lokalt PHP skript för att få igång vad jag trodde skulle vara det svåra att få till HTTP anropen. Där tog jag fel på båda punkterna.
PHP är ett helt okej ramverk för webb överlag. Däremot är dess stöd för parametrar över PUT helt uruselt, inga inbyggda funktioner i kärnan. Finns säkert något ramverk för att hantera det, dock inget jag la tid på att leta upp. Första bakslaget blev att dumpa PHP efter att ha fått till GET och POST requestarna och ett tag fått för sig att NSMutableRequest inte klarade PUT.
Lösningen som faktiskt både blev snabbare och stabilare var att göra det kompletta REST gränssnittet i mitt verkliga J2EE backend och jobba direkt mot det. Sedan visade det sig även att NSMutableRequest gjorde rätt som jag trodde från början och nu är hela REST anropen implementerade utan allt för stora bekymmer.
Det största bekymret som uppkom mot slutet av URL kodningen av parametrarna in. Något som först kändes trivialt tog lite mer tid än planerat och sedan några tankevurpor senare så var allt på plats. En viktig sak att komma ihåg är att stringByAddingPercentEscapesUsingEncoding
metoden gör fin url kodning av allt utom & tecken. Något som självklart förekom i min text och därmed gav bekymmer. Lösningen är att använda CFURLCreateStringByAddingPercentEscapes
för att koda text blocket separat och lägga på det på url parametrarna i övrigt som kodas med stringByAddingPercentEscapesUsingEncoding
. Detta gav det önskade resultatet utan stora bekymmer.
Det som återstår nu är att putsa mera på gränssnittet och få till åtkomst till kameran och fotoalbumen på iPhonen. Sen ladda upp det till servern dessutom. När dessa är på plats så är alla funktioner med och då är det "bara" buggjakt och kvarvarande puts att göra.