我使用MVC应用程序作为服务,所以我删除了视图。我能够调用控制器:
public class HomeController : Controller
{
// GET: /Home/
public string Index(string param1, string param2) {
...
}
来自MFC应用程序的:
string URL(_T("http://localhost:2374/home/index/myparam1/myparam2"));
pHttpFile = dynamic_cast<CHttpFile*> (m_Session.OpenURL(URL));
if (pHttpFile) {
CHAR szBuff[1024] = { 0 };
while (pHttpFile->Read(szBuff, 1024) > 0) {
info += szBuff;
...
现在上传一个XML文件,我在MFC客户端上尝试这个:
CHttpConnection *pHttpConn = m_Session.GetHttpConnection(_T("localhost:2374"));
if (pHttpConn)
{
CHttpFile *pHttpFile = pHttpConn->OpenRequest(
CHttpConnection::HTTP_VERB_POST,
_T("file.xml"));
DWORD dwRet = 0;
pHttpFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CString headers(_T("Content-type: text/xml; charset=utf-8"));
if (pHttpFile->AddRequestHeaders(headers))
{
if (pHttpFile->SendRequestEx(xml.GetLength(), HSR_SYNC | HSR_INITIATE))
{
pHttpFile->Write(xml, xml.GetLength());
pHttpFile->EndRequest(HSR_SYNC);
...
这在MVC方面:
[AcceptVerbs(HttpVerbs.Post)]
public void FileUpload(HttpPostedFileBase uploadFile)
{
客户端执行时没有错误,但服务器端没有任何反应。我不知道如何在Controller中调用FileUpload()。我是否使用MapRoute(),如果是这样的话?
答案 0 :(得分:1)
服务器端没有任何变更。
问题是c ++客户端。您应该致电上传文件的网址是 http://localhost:2374/home/fileupload 。如果方法fileupload在家庭控制器中。你不需要任何其他途径。
我在代码项目http://www.codeproject.com/KB/library/lyoulhttpclient.aspx找到了一个用winnet上传文件的代码示例。我不是一个c ++人,可能还有更多。但这个看起来不错。