フォローインドWebサービスが定義されています。C#webservice HTTP POSTを使用してバイトを送信することができません
[WebMethod]
public String sendBytes(byte[] a)
{
return "good";
}
Webサービスプロキシクラスを使用して正常に呼び出すことができます。
しかし、このWebメソッドにバイナリを含むHTTP POSTを送信できません。 私はこの試み:
try
{
HttpWebRequest request = HttpWebRequest.Create(address) as
HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = 0;
var postData = "xxx";
var data = Encoding.UTF8.GetBytes(postData);
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
Console.Write("Sending request\n\n");
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
String x = Console.ReadLine();
を、私はこの
System.NullReferenceException得た:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 System.Web.Services.Protocols.HttpServerProtocol.ReadParametersでSystem.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequestの要求) でSystem.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollectionのコレクション) で()
私はこのメソッドを使用して文字列を送信できますが、バイナリデータは送信できません。 WebサービスのPOSTの例の定義もまた賢明です。
http://localhost:50178/WebService1.asmx?op=sendBytes
私はこのトピックに関する任意のヘルプや提案のために感謝しています。読み込み用Thx:
編集: ありがとうございました。
私はnull例外を解決したと思う、それは私が送信している値のparamを見つけることができないため、それの原因だと思う。しかし、今私は別の問題があります:
System.ArgumentException:efをSystem.Byteに変換できません。 パラメータ名:type ---> System.FormatException:入力文字列の形式が正しくありませんでした。 System.Byte.ParseでSystem.Number.ParseInt32(Stringを、NumberStylesスタイル、のNumberFormatInfo情報)でSystem.Number.StringToNumber(文字列str、NumberStylesオプション、NumberBuffer &数、のNumberFormatInfo情報、ブールparseDecimal)で (文字列System.Web.Services.ProtocolsでSystem.Convert.ChangeType(Object値、タイプconversionType、するIFormatProviderプロバイダー) でSystem.String.System.IConvertible.ToByte(するIFormatProviderプロバイダー) sで、NumberStylesスタイル、のNumberFormatInfo情報)を 。 ScalarFormatter.FromString(String value、Type type) ---内部例外スタックトレースの末尾--- System.Web.Services.Protocols.ScalarFormatter.FromString(String value、Type type)の System.Web.Serviの ces.Protocols.ValueCollectionParameterReader.Read System.Web.Servicesで(NameValueCollectionのコレクション)System.Web.Services.Protocols.HttpServerProtocol.ReadParametersでSystem.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequestのリクエスト) で ()
try
{
HttpWebRequest request = HttpWebRequest.Create(address) as
HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = 0;
var postData = "a=";
var data = Encoding.UTF8.GetBytes(postData);
byte[] bytedata = new byte[] { 0x65,0x66};
request.ContentLength = data.Length + bytedata.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Write(bytedata, 0, bytedata.Length);
}
var response = (HttpWebResponse)request.GetResponse();
Console.Write("Sending request\n\n");
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
編集2: 私はアーロンの提案を試してみましたが、それはうまくいきませんでした.Protocols.WebServiceHandler.CoreProcessRequestは()
はここのコードです。ここ
は、編集されたコードである:
のSystem.InvalidOperationException:
try
{
HttpWebRequest request = HttpWebRequest.Create(address) as
HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/octet-stream";
//request.ContentLength = 0;
var postData = "a=";
var data = Encoding.UTF8.GetBytes(postData);
byte[] bytedata = new byte[] { 0x65,0x66};
request.ContentLength = data.Length + bytedata.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Write(bytedata, 0, bytedata.Length);
}
var response = (HttpWebResponse)request.GetResponse();
Console.Write("Sending request\n\n");
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
次のエラーを与えた要求形式が不正です: アプリケーション/オクテットストリーム。 System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequestでSystem.Web.Services.Protocols.HttpServerProtocol.ReadParametersで () ()
参考:How can I make a local file as body of an HttpWebRequest?。
事は問題はパケットがうまく、私は同じエラーが出るだろうが、それはDINT形成されていなかった場合ので、私は、URLを変更してみましたです。それは私のwebserviceがどこかで間違っているかもしれませんか?
https://stackoverflow.com/questions/218384/のもう一つの重複それは何ですか?私はそれをどうしたらいいのですか? –
[NullPointerExceptionとは何か、それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) ) –