Pages

Thursday, September 29, 2011

Load an image by url to QLabel using Qt Symbian C++

#include <QtNetwork>
#include <QNetworkAccessManager>
#include <QBuffer>
#include <QByteArray>
#include <QHttp>
#include <QIODevice>
#include <QSplashScreen>
#include <QPixmap>




QNetworkAccessManager* netAccManager = new QNetworkAccessManager;
    QNetworkRequest request(QUrl("http://www.newsunlk.com/image/
product/hp_pavilion_dv6.jpg"));
 
    QNetworkReply *reply = netAccManager->get(request);
    QEventLoop loop;
    QObject::connect(reply,SIGNAL(finished()),&loop,SLOT(quit()));
    loop.exec();   
    QByteArray bytes = reply->readAll();
    QImage img(20, 20, QImage::Format_Indexed8);
    img.loadFromData(bytes);
    ui->item_imagelabel_2->setPixmap(QPixmap::fromImage(img));    

Post Request Using Android To Parse Json

import java.io.IOException;
import java.io.InputStream;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;

import das.shopping.selfcare.android.resources.DataTraveller;
import das.shopping.selfcare.android.service.ConnectionHandler;

import android.content.Context;
import android.util.Log;

public class JsonDataTraveller {

public Context applicationContext;

HttpEntity resEntity = null;
JSONObject jObject;
String result = null;
HttpEntity httpEntity = null;

public JsonDataTraveller(Context context) {
this.applicationContext = context;
}

public String connect(String url, JSONObject jsonObject)
throws ClientProtocolException, IOException {

HttpPost request = new HttpPost(url);
HttpEntity entity;
StringEntity se = new StringEntity(jsonObject.toString());
se.setContentEncoding((Header) new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
entity = se;
request.setEntity(entity);

HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 5000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeOutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeOutSocket);
HttpClient httpClient = new DefaultHttpClient(httpParameters);

HttpResponse response;
response = httpClient.execute(request);
Log.i("Request", request.toString());
HttpEntity resEntity = response.getEntity();

if (resEntity != null) {

// A Simple JSON Response Read
InputStream instream = resEntity.getContent();
result = DataTraveller.convertStreamToString(instream);
Log.d("Result", result);

// Closing the input stream will trigger connection release
instream.close();
return result;
}

return url;
}

}

QJson and Qt Symbian C++

Hi guys...
 I will show an example class to connect with json  parser.
Before compiling the class, you need to download the QJson library from this link http://qjson.sourceforge.net/get_it/


#include "login.h"
#include <QString>
#include <parser.h>
#include <QtNetwork>
#include <QDebug>
#include <QNetworkAccessManager>
#include <QVariant>
#include <QObject>
#include <QMessageBox>
#include "serializer.h"

QString StringList::changeMsisdnUrl;
changeMsisdnService::changeMsisdnService()
{
}
void changeMsisdnService::changeMSISDN(QString userName,QString password){
        QNetworkAccessManager* netAccManager = new QNetworkAccessManager;
        QNetworkRequest request(QUrl(http://www.your loginserviceurl));
 // the url's out put should be a json type. not an object.
        request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
        QVariantMap msisdnDetails;
        msisdnDetails.insert("userName",userName);
        msisdnDetails.insert("password",password);
        QJson::Serializer serializer;
        QByteArray json = serializer.serialize(msisdnDetails);
        QNetworkReply *reply = netAccManager->post(request, json);
        QEventLoop loop;
        QObject::connect(reply,SIGNAL(finished()),&loop,SLOT(quit()));
        loop.exec();
        QByteArray bytes = reply->readAll();
               if (reply->error() == QNetworkReply::NoError)
               {
                   QJson::Parser parser;
                   bool ok;
                   QVariantMap result = parser.parse (bytes, &ok).toMap();
                   if (!ok) {
                     qFatal("An error occured during parsing");
                     exit (1);
                   }
                   status=result["status"].toString();
               }else{
               }
               if (status=="Success") {
                    // Your code
               } else {                  
                    // Your code
               }
}