Last active
April 23, 2020 02:01
-
-
Save hondasports/1aaf26296171a9ad68d58c8567441571 to your computer and use it in GitHub Desktop.
How communicate webservice under the MFC.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <afxinet.h> | |
void HTTPSample::ReadResponse() | |
{ | |
CString url = _T("http://localhost:8080/getSampleResponse/somebinary.bin"); | |
CString server, object; | |
INTERNET_PORT port; | |
DWORD serviceType; | |
::AfxParseURL(url, serviceType, server, object, port); | |
CInternetSession session; | |
CHttpConnection* pConnection = session.GetHttpConnection(server, port); | |
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, object); | |
DWORD statusCode = 0; | |
pFile->SendRequest(); | |
pFile->QueryInfoStatusCode(statusCode); | |
if(statusCode == HTTP_STATUS_BAD_REQUEST || statusCode == HTTP_STATUS_SERVER_ERROR) | |
{ | |
delete pFile; | |
delete pConnection; | |
ASSERT(FALSE); | |
} | |
CHAR buffer[512]; | |
SecureZeroMemory(buffer, sizeof(buffer)); | |
CStdioFile writeFile; | |
writeFile.Open(_T(".\\hoge.bin"), CFile::modeCreate | CFile::modeWrite |CFile::typeBinary); | |
INT readSize = 0; | |
// Save response to the file. | |
do | |
{ | |
readSize = pFile->Read(buffer, sizeof(buffer)); | |
writeFile.Write(buffer, readSize); | |
SecureZeroMemory(buffer, sizeof(buffer)); | |
} while (readSize > 0); | |
writeFile.Close(); | |
delete pFile; | |
delete pConnection; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <afxinet.h> | |
void HTTPSample::SendRequest() | |
{ | |
CString url = _T("http://localhost:8080/postSample"); | |
CString server, object; | |
INTERNET_PORT port; | |
DWORD serviceType; | |
::AfxParseURL(url, serviceType, server, object, port); | |
CString header = _T("Content-Type: application/octet-stream"); | |
CInternetSession session; | |
CHttpConnection* pConnection = session.GetHttpConnection(server, port); | |
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, object); | |
pFile->AddRequestHeaders(header); | |
// It is necessary to load the data to the following variable. | |
char* buffer = new char[1024]; | |
pFile->SendRequestEx((DWORD)sizeof(buffer)); | |
pFile->Write((LPCTSTR)buffer, (UINT)sizeof(buffer)); | |
pFile->EndRequest(); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding:utf-8 -*- | |
from bottle import route, run, request, HTTPResponse | |
import os | |
@route('/hello') | |
def hello(): | |
return "Hello World!" | |
@route('/postSample', method='POST') | |
def postSample(): | |
f = open('hogehoge', 'w+b') | |
for packet in request.body: | |
f.write(packet) | |
f.close() | |
@route('/getSampleResponse/<name>', method='GET') | |
def getSampleResponse(name): | |
with open('./' + name, 'rb') as fh: | |
content = fh.read() | |
res = HTTPResponse(status=200, body=content) | |
res.content_type = 'application/octet-stream' | |
res.set_header('Content-Length', str(len(content))) | |
res.set_header('Cache-Control', 'no-cache') | |
return res | |
run(host='localhost', port=8080, debug=True, reloader=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment