BgsCommunicatorのResultを取得できるように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@579 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2012-01-19 07:18:20 +00:00
parent 5fa653b8fb
commit 833a2b5b4b
2 changed files with 21 additions and 49 deletions

View File

@ -29,6 +29,7 @@ namespace
// Buffer for POST data must be 4096-byte aligned, and a multiple of 4096 bytes.
static unsigned char s_PostBuffer[4096] NN_ATTRIBUTE_ALIGN(4096);
// DEV6接続用証明書
u8 USER_ORIGIN_CLIENT_CERT_DATA[] =
{
0x30, 0x82, 0x03, 0xef, 0x30, 0x82, 0x02, 0xd7, 0xa0, 0x03, 0x02,
@ -125,6 +126,7 @@ u8 USER_ORIGIN_CLIENT_CERT_DATA[] =
0xe2, 0x51, 0xa0, 0x1d, 0x87, 0xf1, 0xe9, 0x13, 0x9f, 0x1d
};
// DEV6接続用秘密鍵
u8 USER_ORIGIN_PRIVATE_KEY[] =
{
0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00,
@ -189,7 +191,6 @@ u8 USER_ORIGIN_PRIVATE_KEY[] =
BgsCommunicator::BgsCommunicator() : m_Result(nn::ResultSuccess())
{
// TODO 自動生成されたコンストラクター・スタブ
}
BgsCommunicator::~BgsCommunicator()
@ -214,6 +215,7 @@ bool BgsCommunicator::Execute(const void* buf, size_t size)
//通信先の設定
//<<HTTPS特有コード>>URLの先頭文字はhttpsとなります
// TODO:DEV6用URL
m_Result = m_HttpCon.Initialize("https://10.12.3.73/bgs/services/BusinessGatewaySOAP", nn::http::REQUEST_METHOD_POST);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
@ -234,16 +236,15 @@ bool BgsCommunicator::Execute(const void* buf, size_t size)
<<HTTPS特有コード>>SSL処理用設定
------------------------------------------------------------------------ */
//ルート証明書の設定
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_HttpCon.SetRootCa( NNSSL_CACERT_PUBLIC_CA_1 ));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_HttpCon.SetRootCa( NNSSL_CACERT_PUBLIC_CA_2 ));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_HttpCon.SetRootCa( NNSSL_CACERT_PUBLIC_CA_3 ));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_HttpCon.SetRootCa( NNSSL_CACERT_PUBLIC_CA_4 ));
m_Result = m_HttpCon.SetRootCa(NNSSL_CACERT_PUBLIC_CA_1);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_Result);
m_Result = m_HttpCon.SetRootCa(NNSSL_CACERT_PUBLIC_CA_2);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_Result);
m_Result = m_HttpCon.SetRootCa(NNSSL_CACERT_PUBLIC_CA_3);\
COMMON_LOGGER_RETURN_FALSE_IF_FAILED( m_Result);
m_Result = m_HttpCon.SetRootCa(NNSSL_CACERT_PUBLIC_CA_4);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
s32 sslError;
m_HttpCon.GetSslError(&sslError);
NN_LOG("sslerror = %x\n", sslError);
m_Result = m_HttpCon.SetClientCert(USER_ORIGIN_CLIENT_CERT_DATA, sizeof(USER_ORIGIN_CLIENT_CERT_DATA),
USER_ORIGIN_PRIVATE_KEY, sizeof(USER_ORIGIN_PRIVATE_KEY)); //クライアント証明書を設定する。
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
@ -261,23 +262,11 @@ bool BgsCommunicator::Execute(const void* buf, size_t size)
m_Result = m_HttpCon.Connect(); //リクエストの送信を開始する。機器が同時実行可能な最大個数のHTTP通信がすでに実行中の場合は、空きができるまでブロック
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
nn::http::ResultCode resultCode;
m_Result = m_HttpCon.GetError(&resultCode);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
NN_LOG("resultCode = %x\n", resultCode);
m_Result = m_HttpCon.GetSslError(&sslError);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
NN_LOG("sslerror = %x\n", sslError);
return true;
}
size_t BgsCommunicator::GetBodySize()
{
/* ------------------------------------------------------------------------
HTTPレスポンスに対するアプリ側の処理()
------------------------------------------------------------------------ */
//HTTPヘッダの情報読み出し
s32 statusCode = 0;
m_Result = m_HttpCon.GetStatusCode(&statusCode); //Statusコードの取得
@ -285,7 +274,7 @@ size_t BgsCommunicator::GetBodySize()
NN_LOG("---HTTP ResultCode = %d---\n", statusCode);
char headerFields[1024];
memset(headerFields, 0, sizeof(headerFields));
std::memset(headerFields, 0, sizeof(headerFields));
u32 fieldLen = sizeof(headerFields);
m_Result = m_HttpCon.GetHeaderField("Content-Length", headerFields, fieldLen, &fieldLen); //特定のヘッダフィールドをラベルから取得
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
@ -298,7 +287,7 @@ size_t BgsCommunicator::GetBodySize()
bool BgsCommunicator::GetBody(u8 *buf, size_t size)
{
//HTTPレスポンスの取得
memset(buf, 0, size);
std::memset(buf, 0, size);
m_Result = m_HttpCon.Read(buf, size); //読み取りが完了するまでブロック。Bodyの最後までの読み込みが成功した場合は、Successを表すResultが返る。バッファサイズが足りない場合は、エラー(Description==ER_RES_BODYBUF_SHORTAGEのResult)が返る*/
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
return true;
@ -306,9 +295,18 @@ bool BgsCommunicator::GetBody(u8 *buf, size_t size)
bool BgsCommunicator::Finalize()
{
m_Result = m_HttpCon.Finalize();
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
m_Result = nn::http::Finalize();
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
m_Result = common::FinalizeNetwork();
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(m_Result);
return true;
}
nn::Result BgsCommunicator::GetLastResult()
{
return m_Result;
}
} /* namespace ConsoleRestore */

View File

@ -63,32 +63,6 @@ void PutString(std::string str)
}
}
#if 0
void DumpHttpBody(u8* pBodyBuf, size_t contentLength)
{
#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT
NN_LOG("---HTTP Body Dump(Content-Length=%d)---\n", contentLength);
int hexCheckCount = 0;
for (int i = 0; i < contentLength; ++i)
{
NN_LOG("%02x ", pBodyBuf[i]);
++hexCheckCount;
if (hexCheckCount == 16)
{
NN_LOG("\n");
hexCheckCount = 0;
}
}
NN_LOG("\n---HTTP Body Dump END---------------------------------\n");
#else
NN_UNUSED_VAR(pBodyBuf);
NN_UNUSED_VAR(contentLength);
NN_UNUSED_VAR(statusCode);
#endif
}
#endif
const size_t s_GxHeapSize = 0x800000;
}