ASIFormDataRequest का उपयोग कर सर्वर पर फ़ाइलों को अपलोड करते समय बहुत अजीब (मुझे) समस्या प्राप्त होती है।ASIHTTPRequest: डेटा (सर्वर) अपलोड करने के दौरान एक (संभावित रूप से) वाहक-विशिष्ट समस्या खाली POST
वाईफाई पर अपलोड करते समय, कोई समस्या नहीं है, मैं बस ठीक अपलोड कर सकता हूं। वाहक के रूप में ओ 2 यूके का उपयोग करके 3 जी पर अपलोड करते समय, कोई समस्या नहीं है। जब मैं वोडाफोन यूके का उपयोग कर एक ही सर्वर का उपयोग कर उसी कोड का उपयोग कर अपलोड करता हूं, HTTP अनुरोध सर्वर पर पोस्ट की गई सामग्री के साथ आता है। अगर मैं एक ही अनुरोध का प्रयास करता हूं लेकिन एक छवि अपलोड किए बिना (बस कुछ पोस्ट डेटा के रूप में test => yes जोड़ें), तो यह काम करेगा, लेकिन अगर मेरे पास test => yes है और फ़ाइल संलग्न है, तो यह POST के साथ सर्वर पर आता है डेटा छीन लिया।
एनबी मैं आईफोन 4 एस पर ASIHTTPRequest का नवीनतम संस्करण उपयोग कर रहा हूं, और यह वोडाफोन यूके और ओ 2 यूके का उपयोग करके कई अन्य फोनों पर पुन: उत्पन्न होता है।
<?php
error_reporting(E_ALL);
ini_set("display_startup_errors","1");
ini_set("display_errors","1");
echo "FILES: ".print_r($_FILES,true);
echo "POST: ".print_r($_POST,true);
echo "GET: ".print_r($_GET,true);
die('done.');
ObjC कोड मैं का उपयोग कर रहा है:
तो, मैं निम्नलिखित PHP स्क्रिप्ट, जो सिर्फ बाहर प्रिंट यह क्या प्राप्त है पर मेरी ObjC कोड ओर इशारा करते हुए कर रहा हूँ
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString: @"http://myserver.com/debugger.php"];
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];
[request setDelegate:self];
[request setDidFinishSelector:@selector(networkRequestSuccess:)];
[request setDidFailSelector:@selector(networkRequestFailure:)];
[request setTimeOutSeconds:120];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"smalltestimage" ofType:@"png"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
if (myData) {
[request addPostValue:@"Yes" forKey:@"Test"];
[request addData:myData withFileName:@"smalltestimage.png" andContentType:@"image/png" forKey:@"photos"];
[request startSynchronous];
}
else{
NSLog(@"File not found..");
}
[request autorelease];
}
- (void)networkRequestSuccess:(ASIHTTPRequest *)request{
NSLog(@"Success Response: %@", [request responseString]);
}
- (void)networkRequestFailure:(ASIHTTPRequest *)request{
NSLog(@"Fail Response: %@", [request responseString]);
}
मैं वाईफ़ाई के साथ अनुप्रयोग चलाने के सक्षम होने पर, या O2 ब्रिटेन पर, मैं निम्नलिखित प्रतिक्रिया मिल:
Success Response: FILES: Array
(
[photos] => Array
(
[name] => smalltestimage.png
[type] => image/png
[tmp_name] => /tmp/phpYTdw4g
[error] => 0
[size] => 13211
)
)
POST: Array
(
[Test] => Yes
)
GET: Array
(
)
done.
अब तक इतना अच्छा है!
मैं वाईफाई विकलांग, लेकिन वोडाफ़ोन ब्रिटेन पर लगभग पूर्ण 3 जी संकेत के साथ के साथ पुनः प्रयास हैं:
Success Response: FILES: Array
(
)
POST: Array
(
)
GET: Array
(
)
done.
बहुत अजीब: न केवल फ़ाइल अब याद आ रही है, लेकिन 'परीक्षण' पोस्ट मूल्य भी है लापता। हालांकि, PHP या ASIHTTPRequest से कोई त्रुटि नहीं है।
क्या कोई मेरे लिए कोई प्रकाश डाल सकता है? यदि वोडाफोन इस तरह की चीजों को जोड़ रहा है, तो यह अधिक प्रसिद्ध क्यों नहीं है? एकमात्र अन्य व्यक्ति जो मुझे एक समान समस्या की रिपोर्ट कर सकता है posted a year ago।
अगर मैं [अनुरोध addData] लाइन बाहर टिप्पणी है, तो यह पूरी तरह से काम करता है:
Success Response: FILES: Array
(
)
POST: Array
(
[Test] => Yes
)
GET: Array
(
)
done.
बहुत अजीब। मैं पूरे दिन यह काम करने की कोशिश कर रहा हूं लेकिन अब तक कोई भाग्य नहीं है। अगर कोई भी प्रकाश ला सकता है, या यहां तक कि एक ही समस्या है तो मैं बहुत आभारी हूं।
ओह मैन। यहाँ प्रतिक्रिया जब HTTPS का उपयोग करके बताया गया है: 'सफलता प्रतिक्रिया: फ़ाइलें: सरणी ( [तस्वीरें] => सरणी ( [नाम] => smalltestimage.png [प्रकार] => छवि/png [tmp_name] =>/tmp/phpzzo5xF [त्रुटि] => 0 [आकार] => 13211 ) ) पोस्ट: सरणी ( [टेस्ट] => हां ) मिलती है: सरणी ( ) किया। ' तो यह HTTPS पर काम कर रहा है, और मुझे लगता है कि यह किसी भी तरह से संबंधित है। बहुत अजीब!! क्या वोडाफोन के पास ऐसा करने का कोई कारण होगा? –
कोई सुराग नहीं। यह वास्तव में लगता है कि यह एक टूटी हुई HTTP प्रॉक्सी है जिसे उन्होंने स्थापित किया है। उम्मीद है कि मदद की! –
उपरोक्त। चीयर्स :) –