0
我正在尝试使用基于Web的API。所有我从我的客户收到的是这样的代码:将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桌面应用程序的一部分。 我正在做的项目完全是基于Web的。全部用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);
}
});
我也尝试了其他所有的AJAX + CORS变化。
例如为:
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并没有“访问控制允许来源”标头。 我与桌面应用程序一起工作的登录信息。我也可以通过浏览器中的http登录直接登录API网址。
有没有人可以帮忙?
我尝试了你所拥有的东西。但我得到标题405方法不允许。这里是提琴手日志:[链接](https://dl.dropboxusercontent.com/u/21648471/Screenshot%202014-02-12%2009.11.42.png) –
这里是响应标头: #1 HTTP/1.1 401未经授权 的Content-Type:text/html的 服务器:Microsoft-IIS/7.5 WWW身份验证:协商 WWW验证:NTLM X供电,通过:ASP.NET X-UA兼容:IE =边缘 Date:Wed,12 Feb 2014 15:10:07 GMT Content-Length:1293 Set-Cookie:BIGipServer *********。*******。******* *** COM = 1017452298.47873.0000。到期=星期三,12-Feb-2014 16:10:02 GMT;路径=/ 代理支持:基于会话的身份验证 –
HTTP/1.1 401未授权 Content-Type:text/html;字符集= US-ASCII 服务器:HTTPAPI/2.0 WWW身份验证:协商TlRMTVNTUAACAAAABgAGADgAAAAVgoni/9xgn2SE96IAAAAAAAAAAMYAxgA + AAAABgGxHQAAAA9EAEkAUgACAAYARABJAFIAAQASAFYAUgBUAFYAVwAyADQAOAA0AAQAKgBkAGkAcgAuAHMAdgBjAC4AYQBjAGMAZQBuAHQAdQByAGUALgBjAG8AbQADAD4AVgBSAFQAVgBXADIANAA4ADQALgBkAGkAcgAuAHMAdgBjAC4AYQBjAGMAZQBuAHQAdQByAGUALgBjAG8AbQAFACIAcwB2AGMALgBhAGMAYwBlAG4AdAB1AHIAZQAuAGMAbwBtAAcACAB + rj2EBCjPAQAAAAA = 日期:星期三,2014年2月12日15:10:07 GMT 的Content-Length:341 的Proxy-支持:基于会话的认证 –