2012-06-28 3 views
1

REST 서비스를 사용하는 데 문제가 있으며 구현시 누락 된 부분을 찾아야합니다. 나는 컬을 사용하여이 나머지 API를 호출하는 경우REST 서비스 사용하기 pb

https://<server-name-or-address>/api/sessions 

, 그것은

curl -i -k -H "Accept:application/*+xml;version=1.5" -u username:password -X POST https://<server-name-or-address>/api/sessions 

그러나 스크립트에 따라 잘 작동, 그것은 C#을 asp.net와 전혀 작동하지 않습니다. 내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다. 여기 내 시도는 다음과 같습니다

1) 상기 문장을 기본 연결이 닫혔습니다 호출에 HTTP 웹 요청을

Uri address = new Uri(url); 
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; 
request.Method = "POST"; 
request.Accept = "application/*+xml;version=1.5"; 

request.Credentials = new NetworkCredential(username,password); 

HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

// 다음과 같은 예외가 발생합니다 사용 : SSL에 대한 트러스트 관계를 설정할 수 없습니다/TLS 보안 채널을 . 나는 또한 HttpClient를, WebRequest 클래스와 시도

string _loginInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", username, password))); 
RestSharp.RestClient client = new RestSharp.RestClient(); 
client.AddDefaultHeader("Accept", "application/*+xml;version=1.5"); 
client.AddDefaultHeader("Authorization", "Basic " + _loginInfo); 
client.BaseUrl = url; 
RestSharp.RestRequest request = new RestSharp.RestRequest(); 
request.AddUrlSegment("method", "POST"); 
request.AddUrlSegment("uri", url); 
string result = client.Execute(request).Content; 

RestSharp

를 사용
Hammock.RestClient client = new Hammock.RestClient(); 
string encodedAPIKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", username, password))); 
client.AddHeader("Accept", "application/*+xml;version=1.5"); 
client.AddHeader("Authorization", "Basic " + username + ":" + password); 
client.Authority = url; 
Hammock.RestRequest req = new Hammock.RestRequest(); 
req.Path = url; 
Hammock.RestResponse response = client.Request(req); 
string _result = client.Request(req).Content; // exception 

3 Hammock.net

사용

2)), 웹 클라이언트 아무것도 표시되지 않습니다하지만이 작동합니다.

+0

다시에 대한 모든 오류 정보를 전달되는? –

+0

Hammock 및 RestSharp에서 응답 없음 – Ali

+0

'HttpStageProcessingException 사용자 코드에 의해 처리되지 않았습니다.'HTTP 웹 요청에서 예외입니다. – Ali

답변

1

직접 HTTP 요청에서 인증 헤더를 직접 설정해보십시오.

string credentials = String.Format("{0}:{1}", username, password); 
byte[] bytes = Encoding.ASCII.GetBytes(credentials); 
string base64 = Convert.ToBase64String(bytes); 
string authorization = String.Concat("Basic ", base64); 
request.Headers.Add("Authorization", authorization); 

편집 : 그것은 자체 서명 만료되거나 유효하지 않은 인증서 때문일 수 있습니다 것처럼

것 같습니다. 이 SO에서 다음

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

수집을 시도 https://stackoverflow.com/questions/5595049/servicepointmanager-servercertificatevalidationcallback-question

+0

작동하지 않습니다 ... 기본 연결이 닫혔습니다 : SSL에 대한 트러스트 관계를 설정할 수 없습니다./TLS 보안 채널. – Ali

+0

서버 인증서를 무시해 보셨습니까? 유효성 검사 콜백? 답변을 업데이트했습니다. –