Savon d'appel donne 500 (erreur interne du serveur) en c#
J'ai un compte d'affiliation et j'ai besoin de faire un soap
appeler pour obtenir des données. Je suis prêt de code à partir d'un site et j'ai essayé de l'appliquer, mais je suis 500(internal server error)
. Mon code est donné ci-dessous.
public void getdata()
{
var _url = "http://secure.directtrack.com/api/soap_affiliate.php";
var _action = "http://secure.directtrack.com/api/soap_affiliate.php/dailyStatsInfo";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateWebRequest(_url, _action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
//begin async call to web request.
IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);
//suspend this thread until call is complete. You might want to
//do something usefull here like update your UI.
asyncResult.AsyncWaitHandle.WaitOne();
//get the response from the completed web request.
string soapResult;
using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
{
soapResult = rd.ReadToEnd();
}
Console.Write(soapResult);
}
private static HttpWebRequest CreateWebRequest(string url, string action)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Headers.Add("SOAPAction", action);
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
private static XmlDocument CreateSoapEnvelope()
{
XmlDocument soapEnvelop = new XmlDocument();
soapEnvelop.LoadXml(@"<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/1999/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/1999/XMLSchema""><SOAP-ENV:Body xmlns=""http://soapinterop.org//"" SOAP-ENV:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""> <q1:Execute xmlns:q1=""http://secure.directtrack.com/api/soap_affiliate.php/dailyStatsInfo""><client xsi:type=""xsd:string"">MyClientNAme</client><add_code xsi:type=""xsd:string"">MyCode</add_code><password xsi:type=""xsd:string"">MyPassword</password><program_id xsi:type=""xsd:int"">161</program_id></q1:Execute></SOAP-ENV:Body></SOAP-ENV:Envelope>");
return soapEnvelop;
}
private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest)
{
using (Stream stream = webRequest.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
}
Quel est le problème? Merci à l'avance.
l'erreur est expliqué ici: checkupdown.com/status/E500.html
c'est la raison générale,et il a expliqué pour sa 500 erreur interne du serveur.ce propos de la mienne.ses quelque chose de troublant à cet appel
Si vous ne savez pas, comment doit-on savoir? Veuillez faire une bonne vérification des erreurs dans votre code, essayez de débogage, essayez de vous connecter. Comme vous le dites vous-même, l'erreur 500 est très général.
c'est la raison générale,et il a expliqué pour sa 500 erreur interne du serveur.ce propos de la mienne.ses quelque chose de troublant à cet appel
Si vous ne savez pas, comment doit-on savoir? Veuillez faire une bonne vérification des erreurs dans votre code, essayez de débogage, essayez de vous connecter. Comme vous le dites vous-même, l'erreur 500 est très général.
OriginalL'auteur user1562231 | 2013-04-19
Vous devez vous connecter pour publier un commentaire.
Une erreur de serveur interne signifie que l'erreur est du côté du serveur. Votre code peut-être appeler le service correctement, ou vous pourriez être en passant un paramètre que le serveur ne sait pas comment les processus (mais le code du serveur n'est pas assez intelligent pour vous le dire).
Sans en savoir plus sur le serveur et ce qu'il attend, il n'est pas possible de diagnostiquer le problème.
Cela dit, il est possible que votre enveloppe soap est le problème. Êtes-vous sûr que vous avez entré est correct, le nom du client, ajoutez le code, mot de passe, id de programme, etc?
OriginalL'auteur JDB
Je suis passé par la aussi, je peux même dire où vous avez obtenu ce code 🙂
donc check it out
est la question
simplement utiliser
OriginalL'auteur Tommy Holman
Vous devriez vraiment essayer d'emballage de votre code dans un ou plusieurs blocs try-catch, comme l'Erreur de Serveur Interne est probablement le résultat d'une exception non gérée.
Si le soap xml est mal formée, cette ligne serait jeter un XmlException:
Celui-ci pourrait produire IOExceptions:
Il ya probablement plus, mais ce devrait vous donner une pousser dans la bonne direction...
OriginalL'auteur Dietz
Vous devez essayer d'utiliser la réflexion pour envoyer des données à un service web. Essayez d'utiliser quelque chose comme ceci:
J'ai utilisé ce code pour la distribution de données au lieu d'avoir à les insérer dans chaque base de données.
Espère que cela aide!
OriginalL'auteur Suveer Singh