1 Reply Latest reply on May 26, 2017 12:41 PM by Kailash_Ravuri

    Update Attribute Value : 500 server error (OSI Web Api - C#)

    Kailash_Ravuri

      I am trying to update the value of an attribute using WebAPI, but i am getting - The remote server returned an error: (500) Internal Server Error.

      The details are :

           I am using .net application to connect to OSI PI WebAPI - using kerberos/basic authentication

           All the get methods are working absolutely fine when try to make a Post/Put methods it is not working at all.

           I tried calling using multiple url schems such as Attribute update value, Stream Update, PiPoint Update

           I am converting a dynamic object to json string and passing it to request

              

                      dynamic postData = new

                      {

                          Timestamp = measurementOccurence.ToUniversalTime().ToString(CultureInfo.InvariantCulture),

                          Value = newValue

                      };

       

                      string json = JsonConvert.SerializeObject(postData);

                      string url = $"attributes/{WebID}/value";

                      _webRequestHandler.PostRequestAsync(url, json);

       

           and my method to make web request is as below

              public ApiResponse PostRequestAsync(string postUrl, string postData)

              {

                  {

                      var apiResponse = new ApiResponse();

                      WebRequest request = WebRequest.Create(BaseUrl + postUrl);

                      request.Method = WebRequestMethods.Http.Put;

                      //request.Credentials = CredentialCache.DefaultCredentials;

                      request.Credentials = new NetworkCredential(_username, _password);

                      request.ContentType = JsonRequestContentType;

       

       

                      byte[] byteArray = Encoding.UTF8.GetBytes(postData);

                      request.ContentLength = byteArray.Length;

       

       

                      Stream requestStream = request.GetRequestStream();

                      requestStream.Write(byteArray, 0, byteArray.Length);

                      requestStream.Close();

                      WebResponse response = request.GetResponse();

                      apiResponse.Status = ((HttpWebResponse)response).StatusCode;

                      apiResponse.ResponseData = ConvertStreamtoJson(response.GetResponseStream());

                      return apiResponse;

                  }

              }

       

      I am not sure what the reason is but i am getting - The remote server returned an error: (500) Internal Server Error. with no more inner exception details.