zoukankan      html  css  js  c++  java
  • C++] WAP GPRS 向WWW网站 提交POST GET 数据 实例

    代码
    ///////////////////////////////////////////////////////////////
    接收程序ASP
    <%
    num
    =request("num")
    pass
    =request("pass")
    set fs=server.CreateObject("Scripting.FileSystemObject")
    set file=fs.OpenTextFile(server.MapPath("http.txt"),8,True)
    file.writeline num
    +"---"+"-"+pass
    file.close
    set file=nothing
    set fs=nothing
    response.write
    "Send OK!"
    %>

    ///////////////////////////////////////////////////////////////
    WM上的程序

    #include
    "ConnectManager.h"
    CConnectManager m_ConnectManager;

    void CGPRSOKDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    HANDLE hConnection;
    hConnection
    = NULL;
    ////////////////////////////////////////////////////////////
    CListBox *pListBox1 = (CListBox*)GetDlgItem(IDC_LIST1);
    ASSERT ( pListBox1 );
    pListBox1
    ->ResetContent (); //从列表框中删除所有项。
    ////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////
    CListBox *pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
    ASSERT ( pListBox );
    //调试用的

    CStringArray StrAry;
    CString abc,abc2;
    m_ConnectManager.EnumNetIdentifier ( StrAry );
    //网络描述
    for ( int i=0; i<StrAry.GetSize(); i++ )
    {
    GPRSGUI
    =StrAry.GetAt(i);
    if( CreateConnection( &hConnection ) == S_OK )
    {
    abc
    ="连接成功";

    }
    else
    {
    abc
    ="连接失败";

    }
    //abc2=""+StrAry.GetAt(i)+"----"+abc+"";
    CString str;
    str.Format(L
    "%s----%s",StrAry.GetAt(i),abc);
    //AfxMessageBox ( StrAry.GetAt(i), MB_ICONINFORMATION );
    pListBox->AddString (str); //网络描述
    }
    }


    void CGPRSOKDlg::OnBnClickedButton2()
    {
    // TODO: 在此添加控件通知处理程序代码

    CListBox
    *pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
    ASSERT ( pListBox );
    DWORD dwIndex
    = pListBox->GetCurSel(); //获得索引值
    if ( dwIndex >=0&& dwIndex < (DWORD)pListBox->GetCount() )
    {
    CString test;
    pListBox
    ->GetText(dwIndex,test);
    SetDlgItemText(IDC_EDIT1,test);
    //MessageBox(test);
    }
    }


    void CGPRSOKDlg::OnBnClickedButton3()
    {
    // TODO: 在此添加控件通知处理程序代码
    CString test,test2;
    GetDlgItemText(IDC_EDIT1,test);
    GetDlgItemText(IDC_EDIT2,test2);
    GPRSGUI
    =test;
    /////////////////////////////*MessageBox(GPRSGUI);*/


    CString szHeaders;
    CString szURL;
    //szURL="http://wjhzyy.com/http.asp?num=aaaaa&pass=vvvvvvvv";
    //LPCTSTR p = szURL;
    LPCTSTR p = test2;
    szHeaders
    ="EmployeeID: 123456\r\n";
    szHeaders
    +="EmployeePassword: 789";
    HANDLE hConnection;
    hConnection
    = NULL;

    // HTTPRequest Response;
    // memset(&Response, NULL, sizeof(HTTPRequest));
    // if (!MCHttp.SendRequestEx(m_VerbType, szURL, HTTP_VERSION_1_1, TEXT("*/*"), TEXT("PervasiveBiz"), szHeaders,
    // szSendBuffer, 60000, &Response))
    if( CreateConnection( &hConnection ) != S_OK )
    MessageBox(_T(
    "连接失败"),_T("错误"));
    //return FALSE;

    CString strServerName;
    CString strObject;
    INTERNET_PORT nPort;
    DWORD dwServiceType;
    if (!AfxParseURL(p, dwServiceType, strServerName, strObject, nPort) ||
    dwServiceType
    != AFX_INET_SERVICE_HTTPS && dwServiceType != AFX_INET_SERVICE_HTTP) //AfxParseURL来为分析映射URL
    {
    MessageBox(_T(
    "不是HTTP,HTTPS站点"),_T("错误"));
    // return -2;
    }

    //MessageBox(_T("111111"),_T("错误"));
    HINTERNET m_hOpen;
    HINTERNET m_hConnect;
    HINTERNET m_hRequest;
    //m_hOpen = InternetOpen(TEXT("PervasiveBiz"), INTERNET_OPEN_TYPE_DIRECT,NULL, 0, 0); //初始化WinINet
    m_hOpen = InternetOpenA ("NokiaN70-1/5.0616.2.0.3 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1", INTERNET_OPEN_TYPE_PRECONFIG, "10.0.0.172:80", 0, 0 );
    if (!m_hOpen)
    {
    MessageBox(_T(
    "初始化失败!!"),_T("错误"));
    // return -1;
    }

    if (!(m_hConnect = InternetConnect(m_hOpen,strServerName, nPort, NULL, NULL, dwServiceType, 0, 0))) //发送数据
    { //0为真 1为假
    InternetCloseHandle(m_hOpen); //关闭连接句柄
    // return -1;
    }

    //MessageBox(_T("2222222"),_T("错误"));
    LPTSTR AcceptTypes[2] = {TEXT("*/*"), NULL};
    DWORD dwFlags
    = INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE;
    // Open an HTTP request handle.
    if (!(m_hRequest = HttpOpenRequest(m_hConnect, TEXT("POST"), strObject, HTTP_VERSION, NULL, (LPCTSTR*)AcceptTypes,dwFlags, 0))) //打开一个 HTTP 请求的句柄
    {
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    // return -1;
    }
    // MessageBox(_T("3333333"),_T("错误"));
    //DWORD dwHttpTimeout=TIME_OUT;
    DWORD dwHttpTimeout;
    if(!InternetSetOption(m_hRequest,INTERNET_OPTION_CONNECT_TIMEOUT,&dwHttpTimeout,sizeof(DWORD))) //设置一个 Internet 选项
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    // return -1;
    }
    if(!InternetSetOption(m_hRequest,INTERNET_OPTION_SEND_TIMEOUT,&dwHttpTimeout,sizeof(DWORD)))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    // return -1;
    }
    if(!InternetSetOption(m_hRequest,INTERNET_OPTION_RECEIVE_TIMEOUT,&dwHttpTimeout,sizeof(DWORD)))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);;
    // return -1;
    }
    // MessageBox(NULL, szSendBuffer,szHeaders, 0);
    CString szSendBuffer;
    // MessageBox(_T("4444444"),_T("错误"));
    //////////////////////////////////////////////
    //重点要注意的地方,HttpSendRequest的第三个参数必须为多字节编码格式,否则服务器端会出错的。
    //花了一天半的时间调试出来的结论。如果不进行转换,服务器端只会接收一半数据,后面的数据将会收不到。
    byte* pszData =newbyte[szSendBuffer.GetLength()];
    char*pConten =newchar[szSendBuffer.GetLength()];
    memset(pszData,
    0,szSendBuffer.GetLength());
    memset(pConten,
    0,szSendBuffer.GetLength());
    WideCharToMultiByte( CP_ACP,
    0, szSendBuffer.GetBuffer(0),
    -1, pConten, szSendBuffer.GetLength(), NULL, NULL );
    memcpy(pszData, pConten, szSendBuffer.GetLength());

    int len = strlen((char*)pszData);
    int len2 = szSendBuffer.GetLength();
    //MessageBox(NULL, szSendBuffer, str);
    if(HttpSendRequest(m_hRequest, szHeaders, szHeaders.GetLength(), pszData, szSendBuffer.GetLength())
    == FALSE)
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    // return -1;
    }
    DWORD dwSize;
    HttpQueryInfo(m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, NULL,
    &dwSize,NULL);
    TCHAR
    * lpHeaders =new TCHAR [dwSize];
    if (!HttpQueryInfo (m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, (LPVOID) lpHeaders, &dwSize, NULL)) //返回HTTP请求关联的信息头
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }
    // MessageBox(_T("555555"),_T("错误"));
    /*

    //MessageBox(NULL, lpHeaders, _T("HttpQueryInfo"), 0);
    TCHAR szHttpStatus[4] = {0};
    memcpy(szHttpStatus,lpHeaders+wcslen(_T("HTTP/1.1 ")),3*sizeof(TCHAR));
    int dwHttpStatus = 0;
    dwHttpStatus =_wtoi(szHttpStatus);
    if ((dwHttpStatus<200)||(dwHttpStatus>300))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }
    MessageBox(_T("666666"),_T("错误"));
    char cResponse[1024] ;
    if(!InternetReadFile (m_hRequest, (LPVOID)(cResponse),32*1024, &dwSize))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }
    CString str;
    str.Format(L"%s",cResponse);
    MessageBox(str);
    MessageBox(_T("77777"),_T("错误"));
    if(dwSize == 0)
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }

    HttpQueryInfo(m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, NULL, &dwSize,NULL);
    if (!HttpQueryInfo (m_hRequest, HTTP_QUERY_RAW_HEADERS_CRLF,
    (LPVOID) lpHeaders, &dwSize, NULL))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }

    memcpy(szHttpStatus,lpHeaders+wcslen(_T("HTTP/1.1 ")),3*sizeof(TCHAR));
    dwHttpStatus = _wtoi(szHttpStatus);
    if ((dwHttpStatus<200)||(dwHttpStatus>300))
    {
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    delete[] lpHeaders;
    // return -1;
    }
    // MessageBox(NULL, lpHeaders, _T("lpHeaders"), 0);
    delete[] lpHeaders;
    InternetCloseHandle(m_hRequest);
    InternetCloseHandle(m_hConnect);
    InternetCloseHandle(m_hOpen);
    //return SENDDATA_SCUCCEED ;
    MessageBox(_T("88888"),_T("错误"));
    */

    }

    转载自:http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18153&highlight=%2B%E9%A3%9E%E9%BE%99%20MM

    狼族营销:http://www.wolves69.com  助你的网站腾飞

  • 相关阅读:
    第十篇 .NET高级技术之委托
    第九篇 .NET高级技术ref、out
    文华财经函数大全
    为字段创建全文检索索引
    C#.NET中代码注释提示
    WPF中的资源引用心得
    XAML文件动态加载
    spring MVC找不到JS的问题
    Oracle性能监控脚本
    ExtJs之Ext.data.Store
  • 原文地址:https://www.cnblogs.com/Wolves/p/1893472.html
Copyright © 2011-2022 走看看