Я пытаюсь использовать веб-интерфейс. Все, что я получил от моего клиента этот код:конвертировать VB.NET в jQuery
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim client = New Net.WebClient
client.Credentials = New Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings("apiUsername"), _
System.Configuration.ConfigurationManager.AppSettings("apiPassword"), _
System.Configuration.ConfigurationManager.AppSettings("apiDomain"))
client.Headers(Net.HttpRequestHeader.ContentType) = "application/json"
Dim eventParam As New PlumbingLibrary.StreamGameParam With {.EnterpriseId = txtAuthorEID.Text,
.HeaderText = TxtText.Text,
.ImageUrl = txtURL.Text,
.Title = txtPhotoURL.Text,
.Description = txtAlbumURL.Text}
Dim stream As New IO.MemoryStream()
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(PlumbingLibrary.StreamGameParam))
serializer.WriteObject(stream, eventParam)
Dim data As Byte() = client.UploadData(PlubingAPI_URL, "POST", stream.ToArray())
stream = New IO.MemoryStream(data)
serializer = New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(PlumbingLibrary.Activity))
Dim returnActivity = TryCast(serializer.ReadObject(stream), PlumbingLibrary.Activity)
End Sub
Это часть рабочего настольного приложения VB, что я должен использовать в качестве примера. Проект, над которым я работаю, основан исключительно на Интернете. Все написано в javascript/jquery.
Я попытался это:
var username = "API-ID",
password = "API-PASS",
url = "API-URL";
function make_basic_auth(user, password) {
var tok = user + ':' + password;
var hash = Base64.encode(tok);
return "Basic " + hash;
}
var auth = make_basic_auth(username,password);
$.support.cors = true;
$.ajax
({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
async: false,
crossDomain: true,
data: JSON.stringify({EnterpriseId: "the.id",
HeaderText: " ",
ImageUrl: " ",
Title: " ",
Description: " "
}),
beforeSend : function(req) {
req.setRequestHeader('Authorization', auth);
},
success: function(){
console.log('Success');
$("body").append("success");
},
error: function (xhr, err) {
console.log("ERROR");
console.log(xhr.statusText);
}
});
Я также попытался все другие АЯКС + Корс вариации.
.: например
xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
console.log(xhr);
xhr.setRequestHeader('X-PINGOTHER', 'pingpong');
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader('Authorization', auth);
, но я получаю 401 unautorized и Нет 'Access-Control-Allow-Origin' заголовок. Данные для входа в систему Я работаю с настольным приложением. Я также могу войти прямо через http-login в браузере в URL-адрес API.
Помогает ли кто-нибудь?
Я попробовал то, что вы заговорили. но я получаю заголовок 405 Метод не разрешен. Вот журнал Fiddler: [link] (https://dl.dropboxusercontent.com/u/21648471/Screenshot%202014-02-12%2009.11.42.png) –
вот заголовки ответов: # 1 HTTP/1.1 401 Несанкционированное Content-Type: текст/html Сервер: Microsoft-IIS/7.5 WWW-Authenticate: согласование WWW-Authenticate: NTLM X-Powered-By: ASP.NET X-UA-Compatible: IE = край Дата: ср, 12 февраля 2014 15:10:07 GMT Контент-длина: 1293 Set-Cookie: BIGipServer *********. *******. ******* *** ком = 1017452298.47873.0000. expires = Wed, 12-Feb-2014 16:10:02 GMT; path =/ Прокси-поддержка: Аутентификация на основе сеанса –
HTTP/1.1 401 Неавторизованный Content-Type: text/html; Charset = US-ASCII Сервер: Microsoft-HTTPAPI/2,0 WWW-Authenticate: согласование TlRMTVNTUAACAAAABgAGADgAAAAVgoni/9xgn2SE96IAAAAAAAAAAMYAxgA + AAAABgGxHQAAAA9EAEkAUgACAAYARABJAFIAAQASAFYAUgBUAFYAVwAyADQAOAA0AAQAKgBkAGkAcgAuAHMAdgBjAC4AYQBjAGMAZQBuAHQAdQByAGUALgBjAG8AbQADAD4AVgBSAFQAVgBXADIANAA4ADQALgBkAGkAcgAuAHMAdgBjAC4AYQBjAGMAZQBuAHQAdQByAGUALgBjAG8AbQAFACIAcwB2AGMALgBhAGMAYwBlAG4AdAB1AHIAZQAuAGMAbwBtAAcACAB + rj2EBCjPAQAAAAA = Дата: Ср, 12 февраля 2014 15:10:07 GMT Content-Length: 341 Proxy- Поддержка: Аутентификация на основе сеанса –