我有一个OpenIdConnect服务器我正在连接到我想在第一次登录时转发令牌数据以存储在服务器上。目前我这样做是为了转发访问令牌
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int dayOfWeek(int d, int m, int y){
// Compute day of week: 0 Sun 1 Mon...6 Sat
int z;
if(m<3){
z=y;
y=y-1;
}
else z=y-2;
return (23*m/9 + d + z + 4 +
y/4- y/100 + y/400)%7;
}
int getDateTime(struct tm *t){
int year,month,day,hrs,min,sec;
printf("Enter date and time (yyyy-mm-dd hh:mm:ss): ");
scanf("%d-%d-%d", &year, &month, &day);
scanf("%d:%d:%d",&hrs,&min,&sec);
int x;
t->tm_year = year - 1900;
t->tm_mon = month - 1;
t->tm_mday = day;
t->tm_hour = hrs;
t->tm_min = min;
t->tm_sec = sec;
t->tm_wday = dayOfWeek(day,month,year);
return ;
}
int main()
{
setvbuf(stdout, NULL, _IONBF, 0);
struct tm Time1 , Time2;
double x;
getDateTime(&Time1);
printf("Start: %s", asctime(&Time1));
getDateTime(&Time2);
printf("End: %s", asctime(&Time2));
return EXIT_SUCCESS;
}
我也想发送个人资料数据,但我不知道正确的标题。 我怎么能这样做:
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = function () {
log(xhr.status, JSON.parse(xhr.responseText));
}
xhr.setRequestHeader("Authorization", "Bearer " + user.access_token);
xhr.send();
有没有人知道正确的标题,因此我可以将这些声明添加到访问令牌。
答案 0 :(得分:1)
以下是我们在其中一个项目中所做的一个示例:
创建了一个通用的API响应类,如下所示:
public class ApiCommonResponse
{
public object Object { get; set; }
public int httpStatus { get; set; }
public string httpErrorMessage { get; set; }
}
一种调用GET和POST API端点的通用方法。此方法将响应映射到提供的数据模型,并将返回对象。
public static ApiCommonResponse GetApiData<T>(string token, T dataModel, string apiEndPoint = null)
{
var responseText = "";
var apiCommonResponse = new ApiCommonResponse();
if (apiEndPoint != null)
{
var request = (HttpWebRequest)WebRequest.Create(apiEndPoint);
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("Authorization", "Bearer " + token);
request.Headers.Add("X-Api-Version", "");
try
{
var httpResponse = (HttpWebResponse)request.GetResponse();
var stream = httpResponse.GetResponseStream();
if (stream != null)
{
using (var streamReader = new StreamReader(stream))
{
responseText = streamReader.ReadToEnd();
}
}
}
catch (WebException we)
{
var stream = we.Response.GetResponseStream();
if (stream != null)
{
var resp = new StreamReader(stream).ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(resp);
throw new Exception(obj.ToString());
}
}
}
var jsonSettings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore };
apiCommonResponse.Object = JsonConvert.DeserializeObject<T>(responseText, jsonSettings);
apiCommonResponse.httpStatus = 0;
return apiCommonResponse;
}
public static ApiCommonResponse PostApiData<T>(string username, string token, T dataModel, string apiEndPoint = null)
{
var apiCommonResponse = new ApiCommonResponse();
if (apiEndPoint == null) return null;
var webRequest = WebRequest.Create(apiEndPoint);
webRequest.Method = "POST";
webRequest.Timeout = 20000;
webRequest.ContentType = "application/json";
request.Headers.Add("Authorization", "Bearer " + token);
webRequest.Headers.Add("X-Api-Version", "");
using (var requeststreams = webRequest.GetRequestStream())
{
using (var sw = new StreamWriter(requeststreams))
{
sw.Write(JsonConvert.SerializeObject(dataModel));
}
}
try
{
var httpStatus = (((HttpWebResponse)webRequest.GetResponse()).StatusCode);
var httpMessage = (((HttpWebResponse)webRequest.GetResponse()).StatusDescription);
using (var s = webRequest.GetResponse().GetResponseStream())
{
if (s == null) return null;
using (var sr = new StreamReader(s))
{
var responseObj = sr.ReadToEnd();
if (!string.IsNullOrEmpty(responseObj))
{
apiCommonResponse = JsonConvert.DeserializeObject<ApiCommonResponse>(responseObj);
}
}
apiCommonResponse.httpStatus = (int)httpStatus;
apiCommonResponse.httpErrorMessage = httpMessage;
apiCommonResponse.Object = apiCommonResponse.Object;
}
}
catch (WebException we)
{
var stream = we.Response.GetResponseStream();
if (stream != null)
{
var resp = new StreamReader(stream).ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(resp);
throw new Exception(obj.ToString());
}
}
return apiCommonResponse;
}