Je développe un gestionnaire ASP.NET avec C # qui reçoit une gamme de données publiées à partir d'un programme Flash externe. Comment puis-je utiliser les données comme tableau? Il semble que le contexte HTTP utilisé dans ASP.NET est automatiquement html-décode les données de poste afin qu'elle sort comme une simple chaîne. Le séparateur dans ce cas est la virgule (pourrait être toujours une virgule, jamais travaillé avec cela avant). P>
semble avoir besoin de deux choses: p>
1) un moyen d'accéder aux données de sa forme codée HTML, où la virgule utilisée comme séparateur pour les tableaux ne peut représenter que des tableaux réels au lieu de la saisie du formulaire client (la virgule de la contribution du client resterait codée à ce stade. ). p>
2) un moyen de simuler le PHP Donc, toute aide sur la façon de faire soit soit appréciée. Merci d'avance! P>
EDIT 1: B> Les données en cours de publication peuvent être par exemple une bande d'adresses, de codes postaux et d'informations supplémentaires facultatives. Telle que print_r () code>, var_dump () code> fonction (ne sais pas PHP moi-même, mais je me dis que ça fait l'affaire là) pour vider la variable dans un tableau. P>
adresse = test de test% 5f5, autre% 5FTesterroad% 5f6 et postalcode = 12345 56789 & extrAnfo =, première-cupidité code>. Dans cet exemple, il y avait deux adresses (% 5f code> égale blanche), deux codes postaux, mais seule la deuxième adresse contenue extrAnfo code> comme l'espace avant que la virgule soit vide. Maintenant encore une fois, comme l'anglais n'est pas ma mère de la mère, le problème était que la possible, une virgule écrite à la clientèle est mixte avec la virgule de divongeante réelle après décodage. P>
4 Réponses :
Vérifiez httpRequest.InputStream Propriété: http: / /msdn.microsoft.com/en-us/library/system.web.httprequest.InputStream.aspx P>
public void ProcessRequest(HttpContext context)
{
using (var reader = new StreamReader(context.Request.InputStream))
{
string postedData = reader.ReadToEnd();
foreach (var item in postedData.Split(new [] { '&' }, StringSplitOptions.RemoveEmptyEntries))
{
var tokens = item.Split(new [] { '=' }, StringSplitOptions.RemoveEmptyEntries);
if (tokens.Length < 2)
{
continue;
}
var paramName = tokens[0];
var paramValue = tokens[1];
var values = paramValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var value in values)
{
var decodedValue = context.Server.UrlDecode(value);
// Do something with the decoded value which corresponds to paramName
}
}
}
}
Merci pour cela, cela obtient les données. Le problème est de l'analyser comme vous l'avez deviné. Les données que j'essayent d'obtenir sont une bande d'adresses, par exemple "adresse", "postalcode", etc. Il devient gênant une analyse gênante qu'avec des boucles et des sous-chaînes. Il y a donc un moyen d'obtenir les données comme forme ou "QueryString" sans décoder les données à l'intérieur?
J'ai mis à jour ma réponse avec un exemple montrant comment utiliser String.Split pour analyser les données publiées.
C'est un très vieux post, mais pour tout le voir maintenant, il y a une meilleure façon de le faire en utilisant JSON. varecteur var = nouveau streamreader (context.request.inputStream) String postedData = Reader.Readtoend (); Jobject obj = jobject.parse (postedData); Vous pouvez maintenant accéder à l'OBJ en utilisant la clé. var utilisateur = (string) obj ["userid"];
J'ai trouvé fait référence aux données brutes affichées sur la page en C # ASP.NET. P> P>
J'ai eu le même problème et j'ai trouvé ce post, mais je n'ai tout simplement pas trouvé une meilleure façon de le faire.
Vous devez mettre le même nom sur toutes les variables post-post, de sorte que les données à enregistrer sont: P>
adresse = adresseValue1 & adresse = adresseValue2 & adresse = adresseValue3 p> blockquote>
dans le script de code C # Vous pouvez ensuite accéder aux paramètres de données avec: p>
xxx pré> p>