was not expected

I’m integrating with BigBlueButton API with Asp Net MVC. But I can’t read the response xml file back from api .
It’s a force module project.

My code:

public ActionResult GetMeetings()
    {
        List<AllMeetings> allMeetings = new List<AllMeetings>();
        XmlSerializer serializer = new XmlSerializer(typeof(List<AllMeetings>), "response");
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://bbb.hsu.ac.ir/bigbluebutton/api/getMeetings?checksum=aca692f682f06312cb43f14564ddf96cb76925ed");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream dataStream = response.GetResponseStream();
        StreamReader sr = new StreamReader(dataStream);
        List<AllMeetings> allMeeting =(List<AllMeetings>)serializer.Deserialize(sr);
        return View(allMeeting);
    }

I coded a class so that I could define attributes as xml element and I use them as an enumerable model

namespace BBBJavaScriptTest
   {
[Serializable]
[XmlType("response")]
public class AllMeetings
{
    [XmlElement(ElementName = "meetingName")]
    public string meetingName { get; set; }

    [XmlElement(ElementName = "meetingID")]
    public string meetingID { get; set; }

    [XmlElement(ElementName = "createDate")]
    public string createDate { get; set; }

    [XmlElement(ElementName = "voiceBridge")]
    public string voiceBridge { get; set; }

    [XmlElement(ElementName = "moderatorPW")]
    public string moderatorPW { get; set; }
    public AllMeetings()
    {
            
    }
}

and the view part is Razor View:

 @model IEnumerable<AllMeetings>

 @{
     ViewBag.Title = "GetMeetings";
     Layout = null;
  }
 <h2>GetMeetings</h2>

 <table class="table table-bordered">
  <tr>
      <td>meetingID</td>
      <td>meetingName</td>
      <td>createDate</td>
      <td>voiceBridge</td>
      <td>moderatorPW</td>
  </tr>


@foreach (var item in Model)
{
    <tr>
        <td>@item.meetingID</td>
        <td>@item.meetingName</td>
        <td>@item.createDate</td>
        <td>@item.voiceBridge</td>
        <td>@item.moderatorPW</td>
    </tr>
}
</table>

Response sample:

<response>
<returncode>SUCCESS</returncode>
<meetings>
    <meeting>
        <meetingName>****</meetingName>
        <meetingID>****</meetingID>
        <internalMeetingID>
            ****
        </internalMeetingID>
        <createTime>1603543982183</createTime>
        <createDate>Sat Oct 24 16:23:02 IRST 2020</createDate>
        <voiceBridge>78409</voiceBridge>
        <dialNumber>****</dialNumber>
        <attendeePW>ap</attendeePW>
        <moderatorPW>mp</moderatorPW>
        <running>true</running>
        <duration>400</duration>
        <hasUserJoined>true</hasUserJoined>
        <recording>false</recording>
        <hasBeenForciblyEnded>false</hasBeenForciblyEnded>
        <startTime>1603543982435</startTime>
        <endTime>0</endTime>
        <participantCount>1</participantCount>
        <listenerCount>1</listenerCount>
        <voiceParticipantCount>0</voiceParticipantCount>
        <videoCount>0</videoCount>
        <maxUsers>0</maxUsers>
        <moderatorCount>1</moderatorCount>
        <attendees>
            <attendee>
                <userID>****</userID>
                <fullName>****</fullName>
                <role>MODERATOR</role>
                <isPresenter>true</isPresenter>
                <isListeningOnly>true</isListeningOnly>
                <hasJoinedVoice>false</hasJoinedVoice>
                <hasVideo>false</hasVideo>
                <clientType>HTML5</clientType>
            </attendee>
        </attendees>
        <metadata> </metadata>
        <isBreakout>false</isBreakout>
    </meeting>
</meetings>
</response>

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I solved the problem , And here is the solution :

XDocument doc = XDocument.Load(sr);
        List<AllMeetings> meetings = new List<AllMeetings>();
        foreach (XElement element in    doc.Element("response").Elements("meetings").Elements("meeting"))
        {
            AllMeetings newMeeting = new AllMeetings();
            newMeeting.meetingName = (string)element.Element("meetingName");
            meetings.Add(newMeeting);
        }
        return View(meetings);


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x