Friday, June 20, 2014

HTTP JSON POST REQUEST C++ EXAMPLE WORKING :-)

#include <Windows.h>
#include <WinInet.h>
#include <tchar.h>
#include<iostream>
#include<stdio.h>
#include<conio.h>
#pragma comment (lib, "Wininet.lib")
#pragma comment (lib, "urlmon.lib")
void Request(LPSTR data);
int main(int argc, _TCHAR* argv[])
{
char data[1024];
char* posturi ="{\"type\":\"Point\",\"coordinates\":[-105.01628,39.57422]}";
wsprintfA( data, posturi);
wsprintfA(data,posturi);
Request(data);
system("pause");
return 0;
}


void Request(LPSTR data)
{
try{
//Retrieve default http user agent
char httpUseragent[512];
DWORD szhttpUserAgent = sizeof(httpUseragent);
//ObtainUserAgentString( 0, httpUseragent, &szhttpUserAgent );

char m[5];


HINTERNET internet = InternetOpen(_T(" Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(internet==NULL)
{
std::cout<<"InternetOpen failed";
}
if(internet != NULL)
{

HINTERNET connect = InternetConnect(internet, _T("geojsonlint.com"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if(connect==NULL)
{
std::cout<<"InternetConnect failed";
}
if(connect != NULL)
{

HINTERNET request = HttpOpenRequest(connect, _T("POST"), _T("/validate"), _T("HTTP/1.1"), NULL, NULL,
INTERNET_FLAG_HYPERLINK | INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP  |
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS |
INTERNET_FLAG_NO_AUTH |
INTERNET_FLAG_NO_CACHE_WRITE |
INTERNET_FLAG_NO_UI |
INTERNET_FLAG_PRAGMA_NOCACHE |
INTERNET_FLAG_RELOAD, NULL);
if(request==NULL)
{
std::cout<<"HttpOpenRequest failed";
}
if(request != NULL)
{
int datalen = 0;
if(data != NULL) datalen = strlen(data);
                LPCWSTR RH=_T("Connection: keep-Alive\r\n");
HttpAddRequestHeaders(request,RH,_tcslen(RH),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
LPCWSTR RH1=_T("Content-Type: application/json\r\n");
HttpAddRequestHeaders(request,RH1,_tcslen(RH1),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
LPCWSTR RH3=_T("Accept-Language: en-US,en;q=0.8\r\n");
HttpAddRequestHeaders(request,RH3,_tcslen(RH3),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
LPCWSTR RH4=_T("Accept: */*\r\n");
HttpAddRequestHeaders(request,RH4,_tcslen(RH4),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
LPCWSTR RH5=_T("Accept-Encoding: gzip,deflate,sdch\r\n");
HttpAddRequestHeaders(request,RH5,_tcslen(RH5),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);

HttpSendRequestA(request, NULL, 0, data, datalen);
DWORD StatusCode = 0;
DWORD StatusCodeLen = sizeof(StatusCode);
HttpQueryInfo(request, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &StatusCode, &StatusCodeLen, NULL);
if(StatusCode==200)
{
std::cout<<"Sucess=200";
}
else
{
std::cout<<"failed="<<StatusCode;
}

InternetCloseHandle(request);
}
}
InternetCloseHandle(connect);
}
InternetCloseHandle(internet);
}
catch(...) {}
}

Wednesday, June 4, 2014

How to Convert UCHAR array to WString and String?

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string>

void main()
{
UCHAR s[32]="@abcdefghijklmnopqrstuvwxyz!";
char temp[32]={0};
std::wstring strws;
memcpy(&temp[0],&s[0],sizeof(s)/sizeof(UCHAR));
std::string str=temp;
    strws.assign(str.length( ),L' ' );
std::copy(str.begin( ),str.end( ),strws.begin( ));
    printf("WString equivalent of UCHAR=%ls",strws.c_str( ));
getch( );
}