<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Проблема с API на VB.net. Пример.]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Проблема с API на VB.net. Пример. форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Mon, 17 Aug 2026 10:37:10 -0400</pubDate>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299232">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Исправлено — форматирование элементов propertylist и элементов фильтра задается клиентом API mikrotik4net, а также добавляется оператор ‘print’. Пример запроса с использованием vb.net с добавленным запросом фильтра:<br /><br />```vb.net<br />Using session As New TikSession(TikConnectorType.Api)<br /> &nbsp; &nbsp;Dim filter As New TikConnectorQueryFilterDictionary<br /> &nbsp; &nbsp;filter.Add(“address”, “x.x.x.x”)<br /> &nbsp; &nbsp;Dim propertylist As New List(Of String)<br /> &nbsp; &nbsp;propertylist.Add(“mac-address”)<br /> &nbsp; &nbsp;session.Open(“MikrotikIP”, “user”, “pass”)<br /> &nbsp; &nbsp;Dim api As Connector.Api.IApiConnector = session.Connector<br /> &nbsp; &nbsp;Dim result As Object = api.ExecuteReader(“/ip/arp”, ExecuteReaderBehaviors.None, (propertylist), Filter)<br /> &nbsp; &nbsp;Me.txtMacAddress.Text = (result(0).GetStringValueOrNull(“mac-address”, True))<br />End Using<br />```<br /><br />Dan <br />
			<i>05.12.2013 16:30:00, dancms.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299232</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299232</guid>
			<pubDate>Thu, 05 Dec 2013 16:30:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299231">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Вот код: Используя Session As New TikSession(TikConnectorType.Api) session.Open(“mikrotikip”, “user”, “password”) Dim api As Connector.Api.IApiConnector = session.Connector Dim params As New Dictionary(Of String, String) params.Add(“.proplist”, “mac-address”) params.Add(“?address”, “x.x.x.x”) Dim result As Object = api.ApiExecuteReader(“/ip/arp/print”, params) Me.txtMacAddress.Text = (result(0).GetStringValueOrNull(“mac-address”, True)) End Using <br />
			<i>04.12.2013 14:56:00, dancms.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299231</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299231</guid>
			<pubDate>Wed, 04 Dec 2013 14:56:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299230">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Вот как я отправляю это из своей программы. Вывод, который я вставил, был получен при отладке при выполнении кода. Возможно, я не вызываю правильную функцию ExecuteReader() из класса miktotik4tik. У кого есть опыт работы с этой реализацией API? Спасибо, что указали на правильные команды API, чтобы я не гонялся за не той проблемой. <br />
			<i>04.12.2013 13:16:00, dancms.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299230</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299230</guid>
			<pubDate>Wed, 04 Dec 2013 13:16:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299229">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			/ip/arp/print =.proplist=mac-address =?address=x.x.x.x, тебе нужно изменить на это: /ip/arp/print =.proplist=mac-address ?address=x.x.x.x <br />
			<i>04.12.2013 06:43:00, janisk.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299229</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299229</guid>
			<pubDate>Wed, 04 Dec 2013 06:43:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299228">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Похоже, продвигаюсь, но ошибки все еще есть: Target возвращает ошибку. COMMAND: /ip/arp/print =.proplist=mac-address =?address=x.x.x.x ERRORS: =message=unknown parameter RESPONSE: !trap =message=unknown parameter !done Кто-нибудь может проверить, правильно ли я использую синтаксис для API-команд? (IP-адрес закомментирован) Я не нашел примера простого API-чтения с параметром запроса для коннектора mikrotik4tik, хотел бы расширить пример, который был опубликован выше, чтобы у других была справка. Спасибо. <br />
			<i>04.12.2013 05:15:00, dancms.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299228</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299228</guid>
			<pubDate>Wed, 04 Dec 2013 05:15:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299227">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Как бы ты передал аргумент для примера, подобного вышеуказанному, используя vb.net, ведь нет валидной команды API? /ip/add/print/where comment=“somecomment” <br />
			<i>03.12.2013 19:57:00, dancms.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299227</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299227</guid>
			<pubDate>Tue, 03 Dec 2013 19:57:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с API на VB.net. Пример.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299226">Проблема с API на VB.net. Пример.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, я ковыряюсь с программой для входа в роутер и получения информации через API. Использую пример на VB.net, который есть на вики: <noindex><a href="http://wiki.mikrotik.com/wiki/API_in_VB_dot_NET" target="_blank" rel="nofollow" >http://wiki.mikrotik.com/wiki/API_in_VB_dot_NET</a></noindex>. Для большинства задач это работает отлично. Но в некоторых случаях, в основном для запросов, возвращающих большой объем информации, программа завершается с ошибкой. Я сузил область поиска до этого участка кода:<br /><br />```<br />Public Function Read() As List(Of String)<br /> &nbsp; &nbsp;Dim output As New List(Of String)<br /> &nbsp; &nbsp;Dim o = ""<br /> &nbsp; &nbsp;Dim tmp(4) As Byte<br /> &nbsp; &nbsp;Dim count As Long<br /><br /> &nbsp; &nbsp;While True<br /> &nbsp; &nbsp; &nbsp; &nbsp;tmp(3) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp;Select Case tmp(3)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case 0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;output.Add(o)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If o.Substring(0, 5) = "!done" Then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit While<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o = ""<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Continue While<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case Is &lt; &H80<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = tmp(3)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case Is &lt; &HC0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = BitConverter.ToInt32(New Byte() {tcpStream.ReadByte(), tmp(3), 0, 0}, 0) ^ &H8000<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case Is &lt; &HE0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(2) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = BitConverter.ToInt32(New Byte() {tcpStream.ReadByte(), tmp(2), tmp(3), 0}, 0) ^ &HC00000<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case Is &lt; &HF0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(2) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(1) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = BitConverter.ToInt32(New Byte() {tcpStream.ReadByte(), tmp(1), tmp(2), tmp(3)}, 0) ^ &HE0000000<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case &HF0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(3) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(2) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(1) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp(0) = tcpStream.ReadByte()<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = BitConverter.ToInt32(tmp, 0)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Case Else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Exit While	 'err<br /> &nbsp; &nbsp; &nbsp; &nbsp;End Select<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp;For i = 0 To count - 1<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;o += ChrW(tcpStream.ReadByte())<br /> &nbsp; &nbsp; &nbsp; &nbsp;Next<br /> &nbsp; &nbsp;End While<br /> &nbsp; &nbsp;Return output<br />End Function<br />```<br /><br />В частности, все работает нормально, когда используется эта часть (небольшое количество данных):<br /><br />```<br />Case Is &lt; &H80<br /> &nbsp; &nbsp;count = tmp(3)<br />```<br /><br />Но я получаю ошибку, когда доходит до этой части:<br /><br />```<br />Case Is &lt; &HC0<br /> &nbsp; &nbsp;count = BitConverter.ToInt32(New Byte() {tcpStream.ReadByte(), tmp(3), 0, 0}, 0) ^ &H8000<br />```<br /><br />Эта часть кода фактически присваивает `count = "Infinity"`, поэтому я уверен, что это неправильно. Я публиковал вопросы на некоторых VB.Net форумах и пытаюсь разобраться, что это делает, но безрезультатно. Если кто-нибудь сталкивался с подобным или может подсказать, куда мне обратиться, буду очень благодарен. Спасибо! –Usogi <br />
			<i>01.06.2013 20:46:00, Usogi.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299226</link>
			<guid>http://mikrotik.moscow/forum/forum57/73999-problema-s-api-na-vb.net.-primer./message299226</guid>
			<pubDate>Sat, 01 Jun 2013 20:46:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
