2014-07-23 1 views
1

SharePoint 2010 REST API를 사용하는 응용 프로그램이 있습니다.401 두 번째 HttpClient/HttpWebRequest 호출에 권한이 없음

1 전화 : 목록에서 가져 오기 항목 : 항목을 만드는 과정에서 가 서로 후에 수행 여러 요청입니다

이 전화를 SUCCES : 401 권한이

: 항목 만들기

1 전화 : 이것은 내가 이런 식으로 할 경우 동일 항목 만들기 : SUCCES를

2 전화 : 항목 삭제는 : 401 권한이

내가 알고 그들이 서로 후 호출 될 때 제 기능들이하지 일을 개별적으로 작동한다는 것입니다. 항목을 만든 후 응용 프로그램 (Windows Phone 8.1 app)을 닫고 다시 시작할 때 항목을 삭제하려고하면 작동합니다.

처음에는 필드를 처리하는 방식과 관련이 있다고 생각하여 finally 문에서 NULL로 변경했지만 작동하지 않았습니다.

public async Task<bool> CreateNewItem(NewItem myNewItem) 
    { 
     try 
     { 
      StatusBar statusBar = await MyStatusBar.ShowStatusBar("Creating new List Item."); 
      //Retrieving Settings from Saved file 
      mySettings = await MyCredentials.GetMySettings(); 
      myCred = new NetworkCredential(mySettings.UserName, mySettings.Password, mySettings.Domain); 

      using (var handler = new HttpClientHandler { Credentials = myCred }) 
      { 
       HttpClient client = new HttpClient(handler); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

       NewItem newItem = myNewItem; 
       var jsonObject = JsonConvert.SerializeObject(newItem); 

       HttpResponseMessage response = await client.PostAsync(new Uri(baseUrl + listNameHourRegistration), new StringContent(jsonObject.ToString(), Encoding.Unicode, "application/json")); 
       response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
       response.EnsureSuccessStatusCode(); 

       string responseMessage = await response.Content.ReadAsStringAsync(); 

       client.Dispose(); 

       if (responseMessage.Length > 0) 
        return true; 
      } 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex.Message); 
      return false; 
     } 
     finally 
     { 
      request = null; 
      response = null; 
      myCred = null; 
      mySettings = null; 
     } 

     return false; 
    } 

답변

2

그냥 같은 문제가 발생합니다.

어쨌든 두 번째 요청은 동일한 인증 절차를 따르지 않습니다. 새 HttpClient 객체를 초기화하는 경우에도 마찬가지입니다. 나는 HTTP 트래픽을 스니핑했다. traffic

첫 번째 요청이 끝난 후 다른 자격 증명으로 다른 작업을 수행하고 있습니다. 당신은 CSOM을 사용할 수 있습니다 : 이것은 또한

6의 제 2의 NTLM 핸드 셰이크의 stucks이 http://www.innovation.ch/personal/ronald/ntlm.html

편집 단계를 보인다 ... (401) 정말 혼란 스러워요에 종료된다. 난 여전히 실제 문제가 무엇인지 모르는 동안 http://social.msdn.microsoft.com/Forums/office/en-US/efd12f11-cdb3-4b28-a9e0-32bfab71a419/windows-phone-81-sdk-for-sharepoint-csom?forum=sharepointdevelopment

+0

답장을 보내 주셔서 감사합니다. 이제는 제가 유일한 사람이 아닙니다. MSDN에서 질문을 만들었습니다. 도움이 될만한 사람이 있습니다. [MSDN 게시] (http://goo.gl/od3F22) –

+0

끔찍한 ... CredentialCache를 어지럽히고 있습니다. 그러나 아직 효과가 없었습니다. –

+0

해결책을 찾았습니까? –

1

는, 적어도 나는 workaround 발견 대신 HttpClientWebRequest 클래스를 사용합니다.

+0

방금이 글을 내 글에 올렸습니다. 나는 'HttpWebRequest'를 사용했지만 동일한 대답을했습니다. –

+0

예, HttpWebRequest를 생성하는 WebRequest.CreateHttp를 사용했습니다. ;) –

관련 문제