https只能收到部分http头信息,急急急!
走的是https+xml格式,但发送请求后,只收到部分http头信息,现在收到的字节数为178,报文内容如下:
HTTP/1.1 200 OK
Date: Sat, 04 Sep 2010 06:34:45 GMT
Server: Apache/2.2.12 (Unix) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8b
Content-Length: 617
Connection: close
Content-Type:
代码如下:
BEGIN----------------------------------------------------------------
/*初始化*/
OpenSSL_add_ssl_algorithms();
/*为打印调试信息作准备*/
SSL_load_error_strings();
/*指定通讯协议(SSLv2/SSLv3/TLSv1)*/
meth = SSLv23_client_method();
/*申请一个会话环境:一个SSL上下文结构*/
ctx = SSL_CTX_new(meth);
。。。
/*验证服务器与否:SSL_VERIFY_NONE;SSL_VERIFY_PEER*/
SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,NULL);
/*加载受信任的ca证书库,用于检查服务器证书合法性*/
SSL_CTX_load_verify_locations(ctx,((String)strPath+"\\ssl\\test.pem").c_str(),NULL);
/*构建随机数生成机制*/
srand( (unsigned)time( NULL ) );
for( int i = 0; i < 100; i++ )
seed_int[i] = rand();
RAND_seed(seed_int, sizeof(seed_int));
/*socket 套接字处理 .............................. */
sd = socket (AF_INET, SOCK_STREAM, 0);
...
memset (&sa, '\0', sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr("211.139.191.240"); /* Server IP */
sa.sin_port = htons(8443); /* Server Port number */
err = connect(sd, (struct sockaddr*)&sa, sizeof(sa));
/*开始 SSL 握手过程*/
ssl = SSL_new (ctx);
/*绑定读写套接字*/
SSL_set_fd (ssl, sd);
/*握手*/
err = SSL_connect(ssl);
/*打印所有加密算法的信息*/
SSL_get_cipher(ssl);
/*提取出服务器的证书信息*/
server_cert = SSL_get_peer_certificate(ssl);
str = X509_NAME_oneline (X509_get_subject_name (server_cert),0,0);
/*X509_get_issuer_name:得到证书签署者(往往是CA)的名字*/
str = X509_NAME_oneline(X509_get_issuer_name(server_cert),0,0);
/*将服务器证书释放 */
X509_free (server_cert);
/*用SSL_write,SSL_read代替write,read函数读写 */
printf("%s\n",strReq);
err = SSL_write(ssl, strReq, strlen(strBuff));
err = SSL_read(ssl, strRsp, 1024);
printf("\n%s",strRsp);
END------------------------------------------------------------------