quick_recipes (779892), страница 27

Файл №779892 quick_recipes (Symbian Books) 27 страницаquick_recipes (779892) страница 272018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 27)

See httperr.hTInt status = resp.StatusCode();// For secure HTTP transaction// e.g. URI scheme is https://,// we can examine the server certificate// here toobreak;case THTTPEvent::EGotResponseBodyData:MHTTPDataSupplier* body = aTransaction.Response().Body();TPtrC8 bodyData;TBool noMoreData = body->GetNextDataPart(bodyData);// Do something with the body data// Check noMoreData to verify there’s// no more data to be received// Must call ReleaseData on the body// once donebody->ReleaseData();break;151152SYMBIAN C++ RECIPEScase THTTPEvent::EResponseComplete:// The transaction’s response is completebreak;case THTTPEvent::ESucceeded:// Transaction completed successfully,// we can close it nowaTransaction.Close();break;case THTTPEvent::EFailed:// Transaction failed for some reasonaTransaction.Close();break;default:// Check if there was any framework// specific errorif (aEvent.iStatus < 0){aTransaction.Close();}break;}}TInt CHTTPGetPageAppUi::MHFRunError(TInt /*aError*/, RHTTPTransaction/*aTransaction*/, const THTTPEvent& /*aEvent*/){// Cleanup any resources in case MHFRunL() leavesreturn KErrNone;}Discussion: Any header added to the session automatically applies to alltransactions and is used in all requests sent using the session.All events regarding the transaction response are received through thetransaction callback object, which implements MHTTPTransactionCallback::MHFRunL() and MHTTPTransactionCallback::MHFRunError().

Both methods are essentially calls from the transaction’s internal active object.From the HTTP framework developer’s perspective, MHFRunL() iswhere the bulk of the action takes place. MHFRunL() is essentially usedby the framework to notify the client of incoming and outgoing eventsthrough the THTTPEvent::iStatus parameter. Incoming events arethe transaction’s current status; for example, header received, body datareceived, and so on. Outgoing events are events that originate due toclient actions, for example when a transaction is cancelled.

Check outthe THTTPEvent class in http/httpevent.h for the full list of eventsand the Symbian Developer Library for detailed documentation on theevents. For normal usage scenarios, handling only a few is sufficient.Receiving EGotResponseHeaders indicates the HTTP status code,for example 404 and response header fields have been received. ForNETWORKING153secure HTTP transactions (transaction URI scheme was https://), it ispossible to inspect the server certificate when this event is received, usingRHTTPTransaction::ServerCert(), which returns a CCertificate object. This can be used to determine the serial, validity period,and so on of the server certificate.Receiving EGotResponseBodyData indicates body data is available.Since a response might not be received in one go, the framework maygenerate this event multiple times.

We will need to read the body dataeach time using GetNextDataPart(), which essentially gives us apointer to the buffer received. The body data ownership lies with theframework and we must call ReleaseData() once we have finishedusing the buffer. When the full body is received, GetNextDataPart()returns ETrue to indicate there is no more body data.Receiving EResponseComplete indicates that all body data has beenreceived.

It is useful to handle this event in case GetNextDataPart()fails to return ETrue.Receiving ESucceeded/EFailed indicates success of the transaction and you should close it once you receive any one of the events.Receiving a negative THTTPEvent::iStatus indicates a generalframework failure and usually is a standard Symbian OS error code. Youshould close the transaction if that is the case.4.3.5.6Parse a URIAmount of time required: 10 minutesLocation of example code: \InetProtUtils\InetProtUtilsDemoRequired library(s): intetprotutils.libRequired header file(s): uri8.hRequired platform security capability(s): NoneProblem: You want to parse a URI.Solution: Test the presence of individual URI components using TUriParser8::IsPresent() and retrieve the component using TUriParser8::Extract().#include <uri8.h> // TUriParser8 (link to intetprotutils.lib)void ExtractUriComponents(){// The URI to test// Note, the user info, query and fragment isn’t present_LIT8(KUri, "http://www.symbian.com/developer/index.htm");TUriParser8 parser;TInt ret = parser.Parse(KUri);if (KErrNone == ret) // URI is valid{if (parser.IsPresent(EUriScheme))154SYMBIAN C++ RECIPES{const TDesC8& scheme = parser.Extract(EUriScheme);}if (parser.IsPresent(EUriUserinfo)){const TDesC8& scheme = parser.Extract(EUriUserinfo);}if (parser.IsPresent(EUriHost)){const TDesC8& host = parser.Extract(EUriHost);}if (parser.IsPresent(EUriPort)){const TDesC8& port = parser.Extract(EUriPort);}if (parser.IsPresent(EUriPath)){const TDesC8& path = parser.Extract(EUriPath);}if (parser.IsPresent(EUriQuery)){const TDesC8& query = parser.Extract(EUriQuery);}if (parser.IsPresent(EUriFragment)){const TDesC8& fragment = parser.Extract(EUriFragment);}}}Discussion: The list of components that can be used with IsPresent()and Extract() is defined in TUriComponent.What may go wrong when you do this: Parsing is a precondition formost operations on the TUriParser8 object, hence make sure youcall Parse() before performing additional operations.4.3.5.7Create a URIAmount of time required: 15 minutesLocation of example code: \InetProtUtils\InetProtUtilsDemoRequired library(s): intetprotutils.libRequired header file(s): uri8.hRequired platform security capability(s): NoneProblem: You want to create a URI.Solution: The three most common ways of generating a URI are:NETWORKING155• Use CUri8::CreateFileUriL() and CUri8::CreatePrivateFileUriL() to create a file URI from an existing filename.#include <uri8.h> // CUri8 (link to intetprotutils.lib)void CreateUriFromFileL(){// File is on a fixed drive_LIT(KFileOnFixedDrive, "c:\\data\\test.txt");// Create URI from the filenameCUri8* uri8 = CUri8::CreateFileUriL(KFileOnFixedDrive());// uriFixed should be file:///c/data/test.txtconst TDesC8& uriFixed = uri8->Uri().UriDes();delete uri8;// File is on a fixed drive_LIT(KFileOnremovableDrive, "e:\\data\\test.txt");// Create URI from the filenameuri8 = CUri8::CreateFileUriL(KFileOnremovableDrive(), EExtMedia);// uriRemovable should be file:///ext-media/data/test.txtconst TDesC8& uriRemovable = uri8->Uri().UriDes();delete uri8;// File is in private directory, on a fixed drive_LIT(KPrivateFileOnFixedDrive, "data\\test.txt");// Create URI from the filenameuri8 = CUri8::CreatePrivateFileUriL(KPrivateFileOnFixedDrive(),EDriveC);// uriPrivateFixed should be file:///private/c/data/test.txtconst TDesC8& uriPrivateFixed = uri8->Uri().UriDes();delete uri8;// File is in private directory, on a removable drive_LIT(KPrivateFileOnremovableDrive, "data\\test.txt");// Create URI from the filenameuri8 = CUri8::CreatePrivateFileUriL( KPrivateFileOnremovableDrive(),EDriveE, EExtMedia);// uriPrivateRemovable should be// file:///private/ext-media/data/test.txtconst TDesC8& uriPrivateRemovable = uri8->Uri().UriDes();delete uri8;}• Use CUri8::ResolveL() to convert a relative URI to its absoluteform.#include <uri8.h> // TUriParser8 et al.

(link to intetprotutils.lib)void ResolveUriL(){// The base URI_LIT8(KBaseUri,"http://www.symbian.com/dev/tools/wintap/index.html");TUriParser8 baseUri;User::LeaveIfError(baseUri.Parse(KBaseUri));156SYMBIAN C++ RECIPES// The reference URI_LIT8(KRefUri, "../analyseheap/index.html");TUriParser8 refUri;User::LeaveIfError(refUri.Parse(KRefUri));// Create the resolved URICUri8* uri = CUri8::ResolveL(baseUri, refUri);// resolvedUri should now be// http://www.symbian.com/dev/tools/analyseheap/index.htmlconst TDesC8& resolvedUri = uri->Uri().UriDes();// Do something...delete uri;}• Use CUri8::SetComponentL() to specify each component andget the full URI.#include <uri8.h> // CUri8 (link to intetprotutils.lib)void URIFromComponentL(){// The URI components_LIT8(KScheme, "http");_LIT8(KHost, "www.symbian.com");_LIT8(KPort, "80");_LIT8(KPath, "/index.htm");// Create the URI objectCUri8* uri = CUri8::NewLC();// Set the componentsuri->SetComponentL(KScheme, EUriScheme);uri->SetComponentL(KHost, EUriHost);uri->SetComponentL(KPort, EUriPort);uri->SetComponentL(KPath, EUriPath);// Get the final URIconst TDesC8& fullUri = uri->Uri().UriDes();// GetHBufC*// Usedeletethe final URI in 16 bit descriptordisplayName = uri->Uri().DisplayFormL();it...displayName;CleanupStack::PopAndDestroy(uri);}Discussion: The CreateXyzFileUriL() methods automatically encode any URI unsafe characters, for example ‘‘ ’’, when generating theURI.

Характеристики

Тип файла
PDF-файл
Размер
1,59 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6401
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее