テキストファイル(デスクトップクライアントによって読み取られる)からASP .NETベースのサーバーへのPOSTデータ

StackOverflow https://stackoverflow.com/questions/1204930

  •  05-07-2019
  •  | 
  •  

質問

クライアントサーバーアプリケーションを開発しています-サーバーはASP .NET Webアプリです。

クライアント(デスクトップアプリ)は、テキストファイルに含まれるデータをasp .net Webアプリに送信する必要があります。 データは、複数行のテキスト形式で約100 KBになります。

このデータを10分ごとに1回実行する必要がある場合、サーバーにこのデータをPOSTする最良の方法は何ですか?

役に立ちましたか?

解決

ファイルがメモリに簡単に収まるほど小さい場合(POST経由で送信する場合はこれにしたい)、次のようにするだけです:

string textFileContents = System.IO.File.ReadAllText( @"C:\MyFolder\MyFile.txt" );

HttpWebRequest request = (HttpWebRequest)WebRequest.Create( "http://www.myserver.com/myurl.aspx" );
request.Method = "POST";

ASCIIEncoding encoding = new ASCIIEncoding();

string postData = "fileContents=" + System.Web.HttpUtility.UrlEncode( textFileContents );

byte[] data = encoding.GetBytes( postData );

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write( data, 0, data.Length );

dataStream.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// do something with the response if required

テキストサーバー側の読み取りに関しては、Page.Request.Form [" fileContents" ]

他のヒント

私は混乱しています。あなたはそれをPOSTパラメータとして欲しいと言いますが、それからヘッダーからそれを読みます...?これは、典型的な投稿フィールドのフォーム、または生データのリクエスト本文になります...

フォームフィールドを送信する場合:

    NameValueCollection fields = new NameValueCollection();
    fields.Add("name1","some text");
    fields.Add("name2","some more text");
    using (var client = new WebClient())
    {
        byte[] resp = client.UploadValues(address, fields);
        // use Encoding to get resp as a string if needed
    }

未加工ファイル(フォームとしてではなく、テキストそのもの)を送信するには、 UploadFile を使用します。ヘッダーには、 .Headers.Add を使用します。

Webメソッドが HttpContext.Current.Request.Headers [" errorLog"] を使用している場合、クライアントアプリケーションはリクエストの実行時にこのカスタムhttpヘッダーを送信する必要があります。 httpヘッダーは大きなデータを送信するためのものではないことに注意してください。

クライアントアプリケーションでは、 Web参照をサービスに追加し、生成されたプロキシクラスを使用して GetWebRequest にカスタムHTTPヘッダーを追加します:

protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
    var req = (HttpWebRequest)base.GetWebRequest(uri);
    var value File.ReadAllText("path_to_your_file");
    req.Headers.Add("errorLog", value);
    return (WebRequest)req;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top