Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonatã Cioni

O servidor remoto retornou um erro: (400) Solicitação Incorreta.

Recommended Posts

falae galera... tudo blz??? to precisando de uma ajudinha de vcs ai...

 

to fazendo uma requisição para um WebService pra mandar um arquivo, e essa requisição está sendo feita em um WindowsService..

só que quando chama o método GetResponse(), da esse erro ai do titulo... já tentei de várias maneiras, mas nenhuma deu jeito até agora...

segue o código do método abaixo e como estou chamando ele...

 

chamada:

NameValueCollection nvc = new NameValueCollection();
nvc.Add("token", "xxxxxxxxxxxxxxxx");
nvc.Add("hash", this.GetMD5Hash(nomeArquivoZip));
nvc.Add("file", nomeArquivoZip);

retorno = this.UploadFilesToRemoteUrl("http://xxx.xxx.xxx.xx/VdoGPS/upload", nvc, new String[]{ nomeArquivoZip });

Método:

public String UploadFilesToRemoteUrl(String url, NameValueCollection nvc, String[] files)
		{
			String respostaWsFetranspor = String.Empty;
			try
			{
				HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(url);
				httpWebRequest2.ContentType = "multipart/form-data;";
				httpWebRequest2.Method = "POST";
				httpWebRequest2.KeepAlive = true;
				httpWebRequest2.Credentials = CredentialCache.DefaultCredentials;

				Stream memStream = new MemoryStream();

				String formdataTemplate = "Content-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}";

				foreach (String key in nvc.Keys)
				{
					String formitem = String.Format(formdataTemplate, key, nvc[key]);
					Byte[] formitembytes = Encoding.UTF8.GetBytes(formitem);
					memStream.Write(formitembytes, 0, formitembytes.Length);
				}

				String headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";

				for (int i = 0; i < files.Length; i++)
				{
					//string header = string.Format(headerTemplate, "file" + i, files[i]);
					String header = String.Format(headerTemplate, "uplTheFile", files[i]);
					Byte[] headerbytes = Encoding.UTF8.GetBytes(header);
					memStream.Write(headerbytes, 0, headerbytes.Length);

					FileStream fileStream = new FileStream(files[i], FileMode.Open,
					FileAccess.Read);
					Byte[] buffer = new Byte[1024];
					Int32 bytesRead = 0;
					while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
					{
						memStream.Write(buffer, 0, bytesRead);
					}
					fileStream.Close();
				}

				httpWebRequest2.ContentLength = memStream.Length;
				Stream requestStream = httpWebRequest2.GetRequestStream();

				memStream.Position = 0;
				byte[] tempBuffer = new byte[memStream.Length];
				memStream.Read(tempBuffer, 0, tempBuffer.Length);
				memStream.Close();
				requestStream.Write(tempBuffer, 0, tempBuffer.Length);
				requestStream.Close();

				WebResponse webResponse2 = httpWebRequest2.GetResponse();
				Stream stream2 = webResponse2.GetResponseStream();
				StreamReader reader2 = new StreamReader(stream2);

				respostaWsFetranspor = reader2.ReadToEnd();
				webResponse2.Close();
			}
			catch (Exception e)
			{
				respostaWsFetranspor = e.Message;
			}
			return respostaWsFetranspor;
		}

o proposito ai é enviar um arquivo para esse webservice...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro 400 é definido por uma chamada errada de uma função. Provavelmente os parâmetros que você está passando não são válildos:

 

http://www.checkupdown.com/status/E400_pt.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.