【发布时间】:2013-10-29 06:54:46
【问题描述】:
我正在尝试从 delphi 中的 url 发送和获取响应
我正在使用 WinInet
这是我正在使用的功能
编辑:我可以成功发送并获得响应问题是网站无法识别发送的 edt1 数据并重播无效响应我在 vb10 的工作代码下方发布了代码工作完美,这有什么区别代码和我的还是我做错了什么?
in button1
var
s:= string;
begin
s:= GetUrlContent('website url ' + edt1.text);
memo.lines.add(s);
end;
function GetUrlContent(const Url: string): string;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1024] of Char;
BytesRead: dWord;
begin
Result := '';
NetHandle := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(NetHandle) then
begin
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
{ UrlHandle valid? Proceed with download }
begin
FillChar(Buffer, SizeOf(Buffer), 0);
repeat
Result := Result + Buffer;
FillChar(Buffer, SizeOf(Buffer), 0);
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end
else
{ UrlHandle is not valid. Raise an exception. }
raise Exception.CreateFmt('Cannot open URL %s', [Url]);
InternetCloseHandle(NetHandle);
end
else
{ NetHandle is not valid. Raise an exception }
raise Exception.Create('Unable to initialize');
end;
但是当我的朋友使用 vb10 提出相同的要求时 完美的工作
这是他在vb中的代码示例
Dim httpWebRequest As HttpWebRequest = CType(WebRequest.Create("web-site url" + TextBox2.Text), HttpWebRequest)
httpWebRequest.ContentType = TextBox2.Text.Trim()
Dim httpWebResponse As HttpWebResponse = CType(httpWebRequest.GetResponse(), HttpWebResponse)
Dim streamReader As StreamReader = New StreamReader(httpWebResponse.GetResponseStream())
Dim text As String = streamReader.ReadToEnd()
Richtextbox1.text = text
我做错了什么?
【问题讨论】:
-
您将格式错误的 URL 传递给您的函数。
s:= GetUrlContent('website url ' + edt1.text);应该是s := GetUrlContent(edt1.Text) -
是的,我做对了——我必须发送 url + edt1.text s:= geturlcontent('Here go the website url'+edt1.text); // 它的 url + edt1.text
-
那么在你的问题中说明,所以我们不要猜测。您使用的是哪个 Delphi 版本?
-
我在他的代码中看到他正在使用 ContentType 也许这就是我做错的地方我怎么能在 delphi 中做到这一点 - thx
-
尝试将
InternetOpen函数的用户代理(第一个参数)改成类似Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0的东西
标签: delphi delphi-7 webrequest