none
(Sumber: milis DOTNET) Error waktu load XML RRS feed

  • Pertanyaan

  • Dear rekans,

    Mohon bantuannya, saya ada project membuat program untuk mengambil data output dari sebuah alat ukur. Output dari alat ini berupa XML katakan lah bisa dibaca dengan

    Alamat http://192.168.200.105/xml

    Sewaktu saya buka data tersebut dari ie tidak ada masalah. namun menjadi masalah ketika meload data di .NET (Win Form) tersebut dengan XDocument.Load(urlAddress).

    Muncul pesan error “The server commited a protocol violation. Section=ResponseStatusLine”

    Saya telah berusaha mencari berbagai solusi di mbah google seperti menambahkan :

    1. useUnsafeHeaderParsing=true di App.Config
    2. menambahkan line seperti :

    request.ProtocolVersion = HttpVersion.Version10

    request.KeepAlive = False

    Tetap hasilnya sama saja, sudah dua minggu saya berkutat dengan hal ini. Mohon bantuannya dari rekans. Trims 


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Selasa, 30 Oktober 2012 06.02
    Moderator

Jawaban

  • Error seperti itu biasanya karena implementasi http (kasus ini alat ukur) pada server kurang tepat.

    referensi: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html Section 6.1

    Dan ini sangat berhubungan dengan HTTP/Socket.

    Sayangnya informasi yang di berikan masih minim sekali dan tampaknya memakai 2 model solusi.

    Linq-to-XML : XDocument.Load(urlAddress) dan WebRequest : request.ProtocolVersion = HttpVersion.Version10

    Karena device ini tidak ada informasi-nya, tentu lebih untuk replikasi error untuk device ini.

    Kalau memang dari browser bisa mendapatkan xml-nya, mungkin bisa di coba juga menggunakan WebBrowser control(?) -- sekedar idea.

    atau mungkin coba dapatkan log-nya dengan menambahkan socket log pada App.config 

    <configuration>

        <startup> 

            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

        </startup>

        <system.diagnostics>

            <sources>

                <source name="System.Net.Sockets">

                    <listeners>

                        <add name="System.Net.Sockets" 

                             type="System.Diagnostics.TextWriterTraceListener" 

                              initializeData="SocketTrace.log" />

                    </listeners>

                </source>

            </sources>

            <switches>

                <add name="System.Net.Sockets" value="Verbose"/>

            </switches>

            <trace autoflush="true" />

        </system.diagnostics>

    </configuration>

    dan coba akses alat ukur tersebut dengan 

    var webclient = new WebClient();

    var xmlFromDevice = webclient.DownloadString(@"http://192.168.200.105/xml");

    dari situ kita akan mendapat SocketTrace.log dan melihat apa yang terjadi pada protocol-nya.

    Dan karena kemungkinan tidak memiliki control dari code pada aplikasi alat ukur tersebut, ada kemungkinan besar harus di coba menggunakan direct socket.

    Tapi untuk sementara, coba memahami dari log-nya dahulu.

    Dijawab oleh Dede


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Selasa, 30 Oktober 2012 06.03
    Moderator