C ++, синтаксис для передачи параметров - PullRequest
0 голосов
/ 26 августа 2009

Этот фрагмент кода является частью фильтра перенаправления isapi, написанного на управляемом c ++, который будет захватывать URL-запросы с префиксом "http://test/. После захвата URL-адреса он перенаправит этот запрос в файл test.aspx, который находится у меня в корень моего веб-приложения.

Мне нужна помощь по синтаксису:

1) передать параметр «urlString», который будет отображаться на моей странице «test.aspx». Проблемная линия: urlString.Replace (urlString, "/test.aspx?urlString");

2) синтаксис для моей страницы aspx для отображения urlString

   DWORD CRedirectorFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt,
            PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo)
        {
            char buffer[256];
            DWORD buffSize = sizeof(buffer);
            BOOL bHeader = pHeaderInfo->GetHeader(pCtxt->m_pFC, "url", buffer, &buffSize); 
            CString urlString(buffer);
            urlString.MakeLower(); // for this exercise 



            if(urlString.Find("/test/") != -1)  //insert url condition
        {


            urlString.Replace(urlString, "/test.aspx?urlString");


                char * newUrlString= urlString.GetBuffer(urlString.GetLength());
                pHeaderInfo->SetHeader(pCtxt->m_pFC, "url", newUrlString);
                return SF_STATUS_REQ_HANDLED_NOTIFICATION;
            }
        //we want to leave this alone and let IIS handle it
            return SF_STATUS_REQ_NEXT_NOTIFICATION;
        }

-------------- aspx page

<html>
<body>
<%
dim url as string = request.querystring("urlString")
response.write(url)

%>
</body>
</html>

Ответы [ 3 ]

1 голос
/ 27 августа 2009

Метод CString::Replace принимает в качестве аргументов строку, подлежащую замене, и строку, подлежащую замене. s.Replace( "foo", "bar" ) преобразует "Тадафоо" в "Тадабар".

Теперь ваш код заменит «anystring» на «/test.aspx?urlString». В буквальном смысле.

Я предполагаю, что вы хотите, чтобы ваш URL был добавлен к URL "/text.aspx" в качестве аргумента GET, и в этом случае вы можете сделать это:

CString newurl = "/text.aspx?urlString=";
newurl += urlString; 

Это будет составлять URL "/test.aspx?urlString=http://test/somethingelse.html": GET-запрос с переменной с именем" urlString ", содержащей ваш исходный URL.

Ваш asp должен прочитать переменную GET urlString с request.QueryString[ "urlString" ], чтобы иметь значение , прочитанное на этом сайте , и в противном случае выглядит нормально, но я не совсем в этом уверен.

0 голосов
/ 26 августа 2009

Судя по вашим комментариям в других ответах, звучит так, как вы хотите:

CString newurl = "/test.aspx?UrlString=";
newurl += urlString;
0 голосов
/ 26 августа 2009

Ваша проблемная строка

urlString.Replace(urlString, "/test.aspx?urlString");

пытается заменить всю строку urlString на "/test.aspx?urlString".

Чтобы достичь этого, вы не можете просто заменить его на следующее?

urlString = "/test.aspx?urlString";
...