如题:谢谢帮忙代码如下:try
{
CString strHeaders = "Accept:*/*\r\n";
CString url = "http://" + m_strIP + "/CSTR/Server/CSTR.php?COMMAND=Login&Account=" + m_strAccount + "&Password=" + m_strPassword; //m_strIP, m_strAccount, m_strPassword分別為CSTR IP, 登入帳號,登入密碼
CInternetSession session;//建立會話
CHttpFile* pF=(CHttpFile*)session.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//利用openurl登入 //讀取Web Server回傳的訊息
CString szData,szAllData;
while(pF->ReadString(szData))
{
//讀取Server回傳的資料
szAllData += szData;
}
if (szAllData.Find("<Value>0</Value>") >0) //若讀到的值為0表示登入失敗
{
TRACE("登入失敗");
}
else if (szAllData.Find("<Value>2</Value>") >0) //若讀到的值為2表示重複登入
{
TRACE("重複登入");
}
else if (szAllData.Find("<Value>1</Value>") >0) //若讀到的值為1表示登入成功
{
//--------------------------Step2:上傳XML檔案---------------------------------------------
//上傳命令COMMAND=AddContent //------------利用POST機制上傳xml---------
strHeaders = _T("Content-Type:application/x-www-form-urlencoded");
CHttpConnection* pConnection = session.GetHttpConnection(_T(m_strIP));
CHttpFile* fileGet;
fileGet = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/CSTR/Server/CSTR.php?COMMAND=AddContent")); CString strSentence,strGetSentence; if (fileGet)
{
//使用SendRequest將XML以post方式上傳到WebServer
fileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)pTemp, nLength); //pTemp型態為BYTE陣列,存放要上傳的XML string,pTemp陣列開頭為XMLDATA=,後面接XML檔案讀出來的XML string while(fileGet->ReadString(strSentence))    // 取得Server回傳的資訊
{
strGetSentence = strGetSentence + strSentence + char(13) + char(10);
} if (strGetSentence.Find("<Message>true</Message>") >0) //若回傳為true表示上傳成功
{
TRACE("上傳成功");
}
else
{
TRACE("上傳失敗");
}
fileGet->Close();
}
}//End of if(szAllData.Find("<Value>1</Value>") >0)
//----------------------------Step3.Logout---------------------------------------------------------
//Logout命令範例:http://192.168.1.127/CSTR/Server/CSTR.php?COMMAND=Logout&Account=ETENManager&Password=12345
url = "http://" + m_strIP + "/CSTR/Server/CSTR.php?COMMAND=Logout&Account=" + m_strAccount + "&Password=" + m_strPassword;
pF = (CHttpFile*)session.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers)); pF->Close();
session.Close();
} //End of try
catch(CInternetException *pEx) //例外處理
{
    TCHAR szError[1024];
    if (pEx->GetErrorMessage(szError, 1024))
    TRACE0(szError);
       else
TRACE0("There was an exception.");     pEx->Delete();
}

解决方案 »

  1.   

    前面登陆用WebRequest和WebResponse类来写,后面上传用WebClient类来写
      

  2.   

    try
    {
     string strHeader = "Accept:*/*\r\n";
     string url ="http://" + m_strIP + "/CSTR/Server/CSTR.php?COMMAND=Login&Account=" + m_strAccount + "&Password=" +m_strPassword; HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
     myRequest.AllowAutoRedirect = true; HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse(); Stream stream = null; stream = response.GetResponseStream(); StreamReader myreader = new StreamReader(stream, System.Text.Encoding.Default, true); string pagefile = myreader.ReadToEnd(); if (pagefile.IndexOf("<Value>0</Value>") > 0)
     {
        .....
     }
     else if(pagefile.IndexOf("<Value>2</Value>") > 0)
     {
        .....
     }
     else if(pagefile.IndexOf("<Value>1</Value>") > 0)
     {
        string strurl = "http://" + m_strIP + "/CSTR/Server/CSTR.php?COMMAND=AddContent";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strurl);
        request.Method = "POST"; 
        request.ContentType = "application/x-www-form-urlencoded"; 
        request.AllowAutoRedirect = true;
        byte[] data = Encoding.UTF8.GetBytes("xml文档"); 
        myRequest.ContentLength = data.Length;
        Stream newStream = myRequest.GetRequestStream();
       //  发送数据
        newStream.Write(data, 0, data.Length);
        newStream.Close();    HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();    Stream stream = null;    stream = response.GetResponseStream();    StreamReader myreader = new StreamReader(stream, System.Text.Encoding.Default, true);    string pagefile = myreader.ReadToEnd();
        if(pagefile.IndexOf("<Message>true</Message>")>0)
        {
        ...成功
        }
        else
       {
        ..失败
       }
       
     }
      
    }
    下面登出可以按照上面登入那样写。。