描述:
我同学做了一个VB,发一个URL好简单喔,所以想请教一下,用VC要怎样才能得到同样的效果?
下面是我同学的VB源码:
Option Explicit
Private Declare Function InitCommonControls Lib "COMCTL32" () As Long
Dim Http As New XMLHTTP
Function UrlEncode(strUrl As String) As String '对发送内容加密(可有可无)
Dim I As Integer, J As Integer, a() As Byte, strChar As String, strText As String
strText = ""
For I = 1 To Len(strUrl)
strChar = Mid(strUrl, I, 1)
Select Case Asc(strChar)
Case 48 To 57, 65 To 90, 97 To 122, 42, 45, 46, 64, 95
strText = strText & strChar
Case 32
strText = strText & "+"
Case Else
a = StrConv(strChar, vbFromUnicode)
For J = LBound(a) To UBound(a)
strText = strText & "%" & Right("00" & Hex(a(J)), 2)
Next
Erase a()
End Select
Next
UrlEncode = strText
End Function
Private Sub CmdSend_Click()
Dim sUrl As String
sUrl = "https://fetionAPI.appspot.com/api/?from=" + TxtFrom.Text + "&pw=" + TxtPass.Text + "&to=" + TxtTo.Text + "&msg=" + UrlEncode(TxtMessage.Text)
With Http '通过HTTP
.Open "GET", sUrl, False '运行
.send '发送
Label5.Caption = "状态:" + .responseText '接收发送情况
End With
End Sub
Private Sub Form_Initialize() '初始化程序
InitCommonControls
End Sub
解决方案1:
//****************************************************************************************//
//函数 GetWebContent
//主要功能:
//参数列表:
// 1、CString strURL:
//返回值:
//备注:
//****************************************************************************************//
CString GetWebContent(CString strURL, CString strDesc)
{
CString strSentence;
CString strRet = "";
// CInternetSession sess;//Create session
CInternetSession sess("Super_Spider");//Create session//Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
// sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 20000);
// sess.SetOption(INTERNET_OPTION_CONTROL_SEND_TIMEOUT, 10000);
// sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 10000);
// sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 10000);
// sess.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1);
CHttpFile* fileGet;
try
{
fileGet = (CHttpFile*)sess.OpenURL(strURL);//Open file
}
catch(...)
{
fileGet = 0;
strDesc.Format("访问网络出错,错误号:%d", GetLastError());
return "";
}
if(fileGet)
{
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = fileGet->QueryInfo(
HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen);
CString strType;
fileGet->QueryInfo(HTTP_QUERY_CONTENT_TYPE, strType);
if(strType.Find("text/html") < 0)//不是网页数据
bSuccess = false;
if( bSuccess && dwStatus>= 200 && dwStatus < 300 )
{
&n