저는 지불 엔진에 XML을 게시해야하는 고전적인 ASP 응용 프로그램을 가지고 있으며 참조 코드는 System.Net.HttpWebRequest 객체 (asp.net)를 사용합니다. XML을 게시하는 데 사용할 수있는 Classic ASP에 해당하는 항목이 있습니까?고전 ASP에서 System.Net.HttpWebRequest?
답변
Heres ASP에서 HTTP 요청을하기 위해 사용하는 약간의 도우미 함수. 그것의 JScript에 있지만 적어도 몇 가지 불쾌한 잡았다 우리는 몇 년 동안 철분했다의 포인터를 생각을해야합니다.
<%
/*
Class: HttpRequest
Object encapsulates the process of making an HTTP Request.
Parameters:
url - The gtarget url
data - Any paramaters which are required by the request.
method - Whether to send the request as POST or GET
options - async (true|false): should we send this asyncronously (fire and forget) or should we wait and return the data we get back? Default is false
Returns:
Returns the result of the request in text format.
*/
var HttpRequest = function(url, data, method, options )
{
options = options ? options : { "async" : false };
options[ "async" ] = options["async"] ? true : false;
var text = "";
data = data ? data : "";
method = method ? String(method).toUpperCase() : "POST";
// Make the request
var objXmlHttp = new ActiveXObject("MSXML2.ServerXMLHTTP");
objXmlHttp.setOption(2, 13056); // Ignore all SSL errors
try {
objXmlHttp.open(method, url, options[ "async" ]); // Method, URL, Async?
}
catch (e)
{
text = "Open operation failed: " + e.description;
}
objXmlHttp.setTimeouts(30000, 30000, 30000, 30000); // Timeouts in ms for parts of communication: resolve, connect, send (per packet), receive (per packet)
try {
if (method == "POST") {
objXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
objXmlHttp.send(data);
if (options[ "async" ]) {
return "";
}
text = objXmlHttp.responseText;
} catch(e) {
text = "Send data failed: " + e.description;
}
// Did we get a "200 OK" status?
if (objXmlHttp.status != 200)
{
// Non-OK HTTP response
text = "Http Error: " + objXmlHttp.Status + " " + Server.HtmlEncode(objXmlHttp.StatusText) + "\nFailed to grab page data from: " + url;
}
objXmlHttp = null; // Be nice to the server
return text ;
}
%>
당신이 (httprequest.asp라고 함) 파일에 그 내용을 저장하는 경우는이 코드를 사용하여 사용할 수 있습니다, 경고의
<%@ Language="JScript" %>
<!--#include file="httprequest.asp"-->
<%
var url = "http://www.google.co.uk/search";
var data = "q=the+stone+roses"; // Notice you will need to url encode your values, simply pass them in as a name/value string
Response.Write(HttpRequest(url, data, "GET"));
%>
하나의 단어를 그것으로 돌아갑니다 오류가있는 경우 당신은 오류 메시지, 그것을 잡을 방법이 없습니다. 우리의 요구에 잘 맞습니다. 조금 더 보호가 필요하다면 오류를 조금 더 잘 처리 할 수있는 사용자 정의 함수를 만들 수 있습니다.
희망이 있습니다.
모두 AJAXy는 XMLHttp를 사용합니다.
이 링크가 도움이되는지보기 - http://www.mikesdotnetting.com/Article.aspx?ArticleID=39
편집 :이 대답을 수락하지 마십시오.
내가 한 것은 Google을 사용하여 검색하는 것입니다. 너 먼저 해봤 니?
일부 질문은 검색을 통해 답변을 얻을 수 있습니다.
다른 모든 경우에는 StackOverflow가 있습니다.
클래식 ASP는 XMLHTTP
ActiveX 개체 또는 MSXML 라이브러리를 통해 사용 가능한 ServerXMLHTTP
개체를 사용하여 요청을 시작할 수 있습니다. (MSDN reference).
This KB article은 ServerXMLHTTP
개체에 대한 좋은 참조 및 예제 코드를 제공합니다.
여기서 ServerXMLHTTP를 사용하는 옵션이며 XMLHTTP는 서버 측에서 사용하면 안되며 스레드로부터 안전하지 않습니다. – AnthonyWJones
나는 여기에 설명이 함수의 비동기 버전이 "아니오 전송"오류를 작동하고 피할 이유 생각 :
How do I fire an asynchronous call in asp classic and ignore the response?
당신이 결코 비동기 버전에서 COM 개체를 해제하지하고 있다는인가를 - 문제가 해결되면 좋지만, 시간이 많이 낭비되는 것은 바람직하지 않습니다.
+1, 좋은 기능이지만 게시물이 HTML 양식 게시를 에뮬레이트한다고 가정합니다. 나는 그 가정을 제거하고 옵션 타입 객체에 컨텐트 타입 헤더를 옵션 속성으로 만들 것입니다. 기본값으로 지정할 수 있지만 "text/xml"과 같이 외부 코드에서 지정할 수 있습니다. – AnthonyWJones
너무도 사실 인 앤서니 (Anthony)는 당시에 필요성에서 벗어나서 지금 우리가 필요로하는 기능 중 하나입니다. Jscript를 ASP에 사용하는 것을 좋아하는 이유 중 하나는 최근에 나온 클라이언트 측의 모든 장점과 기술에서 배울 수 있다는 것입니다. 옵션 객체를 통과 시키면 refactor가 쉽게 "contenttype"옵션을 전달할 수 있고 현재 사용하고있는 것을 손상시키지 않습니다. 좋은 지적이지만, 우리 코드베이스에 추가 할 수 있습니다;) –
고마워요! 너는 구세주 야! – cgatian