#php #vb.net
#php #vb.net
Вопрос:
Я пытаюсь подключиться к API, предоставляемому нашим поставщиком телекоммуникационных услуг, все, что они мне предоставили, — это веб-страница PHP, которую я хочу разместить.
Я, в свою очередь, попытался преобразовать это в VB .NET, что имеет для меня гораздо больше смысла, и было бы проще вставлять собираемые данные в SQL и т.д.
Я изо всех сил пытаюсь заставить API отвечать даже на базовую «аутентификацию», которая у него есть.
<?php
// IPscape API auth details
define(IPS_API_KEY, "KEY");
define(IPS_API_USERPWD, "USER:PASSWORD");
// API URLs
define(IPS_AUTH_SERVICE, "URL");
define(IPS_CAMPAIGN_SERVICE, "URL");
define(VERBOSE, true);
define(DEBUG, false);
// IPscape API auth
if (VERBOSE || DEBUG) { echo "IPscape API auth startingn"; }
$ips_auth_response = ips_api_auth();
if (VERBOSE || DEBUG) { echo "IPscape API auth completen"; if (DEBUG) { echo print_r($ips_auth_response."n",true); }}
Теперь мой PHP чрезвычайно схематичен, но я почти уверен, что auth вызывает следующую функцию:
function ips_api_auth() {
$api_key = "apikey=".IPS_API_KEY;
$ips_auth = curl_init(IPS_AUTH_SERVICE);
curl_setopt($ips_auth, CURLOPT_POST, 1);
curl_setopt($ips_auth, CURLOPT_POSTFIELDS, $api_key);
curl_setopt($ips_auth, CURLOPT_USERPWD, IPS_API_USERPWD);
curl_setopt($ips_auth, CURLOPT_RETURNTRANSFER, true);
$ips_auth_response = curl_exec($ips_auth);
curl_close($ips_auth);
return $ips_auth_response;
}
?>
По сути, я ввел это следующим образом:
Public IPS_API_KEY As String = "KEY"
Public IPS_API_USERPWD As String = "USER:PASSWORD"
Public IPS_AUTH_SERVICE As String = "URL"
Public IPS_CAMPAIGN_SERVICE As String = "URL"
Sub Main()
Dim authresponse As String
authresponse = ips_api_auth()
End Sub
Public Function ips_api_auth As String
ServicePointManager.Expect100Continue = true
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
Dim myReq as HttpWebRequest
Dim myResp as HttpWebResponse
myReq = HttpWebRequest.Create(IPS_AUTH_SERVICE)
myreq.Method = "POST"
myReq.contenttype = "application/json"
myReq.Headers.Add("Authorization","Basic " amp; Convert.ToBase64String(Encoding.UTF8.GetBytes(IPS_API_USERPWD)))
Dim myData As String = "apikey=" amp; IPS_API_KEY
myReq.GetRequestStream.Write(System.Text.Encoding.UTF8.GetBytes(myData), 0, System.Text.Encoding.UTF8.GetBytes(myData).Count)
myResp = myReq.GetResponse
Dim myreader As New System.IO.StreamReader(myResp.GetResponseStream)
Dim myText As String
myText = myreader.ReadToEnd
End Function
Каким бы ни был способ, которым я пытаюсь это сделать, я получаю
System.Net.WebException: 'The remote server returned an error: (400) Bad Request.'
Теперь я почти уверен, что я рассмотрел все, и я смотрел на это достаточно долго, чтобы я мог использовать другую пару глаз.
Любые мысли от людей, немного более сведущих в PHP, чем я.
Ваше здоровье