2014-12-11 2 views
1

Я пытаюсь отправить данные & получить текст ответа программно, но ничего не публикуется & возвращаемые значения, я получаю тот же тег HTML, который есть в веб-странице по умолчанию. мой код:не удалось получить данные для сообщений, используя VBA

Sub GetData() 
Dim htm As Object 
Set htm = CreateObject("htmlFile") 
With CreateObject("msxml2.xmlhttp") 
    .Open "POST", "http://dreamsware.info/bahrio/loc/index.php", False 
    .send "mcc=404&mnc=10&lac=246&cid=20001" 
    htm.body.innerHTML = .responsetext 
End With 
Debug.Print htm.body.innerHTML 
End Sub 

Заранее спасибо

ответ

0

Это результат вашего кода здесь (в MessageBox).

--------------------------- 

--------------------------- 
<html> 
<head> 
<title>GSM LAC/CID -> location test</title> 
</head> 
<body> 
<style type="text/css"> 
    body { 
     font-family: Verdana, Helvetica, Geneva, Arial, 
      SunSans-Regular, sans-serif; 
     font-size:12; 
    } 
    td { 
     font-family: Verdana, Helvetica, Geneva, Arial, 
      SunSans-Regular, sans-serif; 
     font-size:12; 
    } 
</style> 
<center> 
<table width="450"> 
<tr><td> 
</td></tr> 
</table> 
<font size="1"><a href="http://bahrio.blogspot.com" target="_top">Bahri Okuroglu</a></font> 
<form method="post" action=""> 
    <table> 
     <tr> 
      <td><a href="http://en.wikipedia.org/wiki/List_of_mobile_country_codes">MCC - Mobile Country Code</a></td> 
      <td> 
       <input type="text" size="5" name="mcc" value="286"><br /> 
      </td> 
     <tr> 
      <td><a href="http://en.wikipedia.org/wiki/Mobile_Network_Code">MNC - Mobile Network Code</a></td> 
      <td> 
       <input type="text" size="5" name="mnc" value="01"><br /> 
      </td> 
     <tr> 
      <td>LAC - Location Area Code</td> 
      <td> 
       <input type="text" size="5" name="lac" value="21534"><br /> 
      </td> 

--------------------------- 
OK 
--------------------------- 

Но вы ошибаетесь, не проверяя, что происходит.

URL должен быть на 100% верным. В отличие от браузера отсутствует код для исправления URL-адресов.

Цель моей программы - получить сведения об ошибке.

Как получить правильный URL-адрес, введите свой URL-адрес в браузере, перейдите, и правильный URL-адрес часто находится в адресной строке. Другой способ - использовать свойства ссылки и т. Д., Чтобы получить URL-адрес.

Также Microsoft.XMLHTTP сопоставляется с Microsoft.XMLHTTP.1.0. HKEY_CLASSES_ROOT \ Msxml2.XMLHTTP сопоставляется с Msxml2.XMLHTTP.3.0. Попробуйте более поздний вариант

Попробуйте этот способ, используя xmlhttp. Отредактируйте URL-адрес и т. Д. Если кажется, что нужно прокомментировать if/end, если вы хотите сбрасывать информацию, даже если она работает. Это vbscript, но vbscript работает в vb6.

On Error Resume Next 
Set File = WScript.CreateObject("Microsoft.XMLHTTP") 
File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False 
'This is IE 8 headers 
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)" 
File.Send 
If err.number <> 0 then 
    line ="" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error getting file" 
    Line = Line & vbcrlf & "==================" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description 
    Line = Line & vbcrlf & "Source " & err.source 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText 
    Line = Line & vbcrlf & File.getAllResponseHeaders 
    wscript.echo Line 
    Err.clear 
    wscript.quit 
End If 

On Error Goto 0 

Set BS = CreateObject("ADODB.Stream") 
BS.type = 1 
BS.open 
BS.Write File.ResponseBody 
BS.SaveToFile "c:\users\test.txt", 2 

Также проверьте, работают ли эти другие объекты.

C:\Users>reg query hkcr /f xmlhttp 

HKEY_CLASSES_ROOT\Microsoft.XMLHTTP 
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0 
End of search: 12 match(es) found. 

быть также известно, есть предел того, сколько раз вы можете вызвать любой конкретный объект XMLHTTP до возникновения блокировки. Если это произойдет, и это произойдет при отладке кода, просто измените на

+0

Привет благодарность за ответ, его ошибка была вызвана фактической проблемой, когда я отправляю данные, они не отправляются, и я не получаю желаемые данные ответа , – Excelliot

+0

Ну, если вы адаптируете мой код, вы получите причину. Вы должны проверить наличие ошибок. – BambiLongGone

+0

Как я доказал, ваш код работает здесь, так что это проблема конфигурации. Проверка ошибок. Каждая запрограммированная программа должна проверять наличие ошибок. Тогда он скажет вам, почему. – BambiLongGone