Я скопировал и вставил этот код откуда-то, и, пытаясь запустить его, я получаю ошибку исключения. Что может быть не так с этим?
Вот мой файл register.php
<?php
require_once("script_pages__/db_handler.php");
$db=new db_handler();
$fname=$_REQUEST['fname'];
$lname=$_REQUEST['lname'];
$username=$_REQUEST['username'];
$password=$_REQUEST['password'];
$email=$_REQUEST['email'];
$dob=$_REQUEST['dob'];if(filter_var($email,FILTER_VALIDATE_EMAIL)){
if(isset($_FILES['profile'])){
$random_file_no=rand(0000,9999);
$media=$_FILES['profile'];
$tmpname=$_FILES['profile']['tmp_name'];
$name=$_FILES['profile']['name'];
$target="Uploads/";
$profile_pic=$random_file_no.substr($username,0,3).$name;
$target=$target.basename($profile_pic);
move_uploaded_file( $_FILES["profile"]["tmp_name"], $target);
$register=$db->register($fname,$lname,$username,$email,$dob,$password,$profile_pic);
}else{
$register=$db->register($fname,$lname,$username,$email,$dob,$password,0);
}
echo json_encode($register);
}else{
$response=array();
$response["error"]=1;
$response["message"]="Enter a valid email";
echo json_encode($response);
}
?>
А вот и мой код на C #
void cameraCapture_Completed(object sender, PhotoResult e)
{
//checking if everything went fine when capturing a photo
if (e.TaskResult != TaskResult.OK)
return;
string userId = "10";
string userHash = "40a6fe73f24b4c73f0d7943c8a41adcb";
//preparing RestRequest by adding server url, parameteres and files...
RestRequest request = new RestRequest("http://www.imanitv.com/shareyourtrip/addpost.php", Method.POST);
request.AddParameter("fname", Fname);
request.AddParameter("lname", Lname);
request.AddParameter("username", Username);
request.AddParameter("password", Password);
request.AddParameter("dob", Dob);
request.AddParameter("email", Email);
//request.AddFile(ReadToEnd(e.ChosenPhoto));
request.AddFile("photo", ReadToEnd(e.ChosenPhoto), "photo.jpg", "image/pjpeg");
//calling server with restClient
RestClient restClient = new RestClient();
restClient.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
//upload successfull
MessageBox.Show("Upload completed succesfully...\n" + response.Content);
}
else
{
//error ocured during upload
MessageBox.Show(response.StatusCode + "\n" + response.StatusDescription);
}
});
}
//method for converting stream to byte[]
public byte[] ReadToEnd(System.IO.Stream stream)
{
long originalPosition = stream.Position;
stream.Position = 0;
try
{
byte[] readBuffer = new byte[4096];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0)
{
totalBytesRead += bytesRead;
if (totalBytesRead == readBuffer.Length)
{
int nextByte = stream.ReadByte();
if (nextByte != -1)
{
byte[] temp = new byte[readBuffer.Length * 2];
Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length);
Buffer.SetByte(temp, totalBytesRead, (byte)nextByte);
readBuffer = temp;
totalBytesRead++;
}
}
}
byte[] buffer = readBuffer;
if (readBuffer.Length != totalBytesRead)
{
buffer = new byte[totalBytesRead];
Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead);
}
return buffer;
}
finally
{
stream.Position = originalPosition;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
CameraCaptureTask cameraCapture = new CameraCaptureTask();
cameraCapture.Completed += new EventHandler<PhotoResult>(cameraCapture_Completed);
cameraCapture.Show();
}
И вот исключение:
System.ArgumentNullException was unhandled by user code
HResult=-2147467261
Message=Value cannot be null.
Parameter name: uri
Source=System
ParamName=uri
StackTrace:
at System.UriBuilder..ctor(Uri uri)
at RestSharp.RestClient.BuildUri(IRestRequest request)
at RestSharp.RestClient.ConfigureHttp(IRestRequest request, IHttp http)
at RestSharp.RestClient.ExecuteAsync(IRestRequest request, Action`2 callback, String httpMethod, Func`4 getWebRequest)
at RestSharp.RestClient.ExecuteAsync(IRestRequest request, Action`2 callback)
at RestSharp.RestClientExtensions.ExecuteAsync(IRestClient client, IRestRequest request, Action`1 callback)
at RestSharpTrial.MainPage.cameraCapture_Completed(Object sender, PhotoResult e)
at Microsoft.Phone.Tasks.ChooserBase`1.FireCompleted(Object sender, TTaskEventArgs e, Delegate fireThisHandlerOnly)
at Microsoft.Phone.Tasks.CameraCaptureTask.OnInvokeReturned(Byte[] outputBuffer, Delegate fireThisHandlerOnly)
at Microsoft.Phone.Tasks.GenericChooser.OnInvokeReturned(Byte[] outputBuffer, Delegate d)
at Microsoft.Phone.Tasks.ChooserListener.OnChildTaskReturned(ChildTaskReturnedEventArgs args)
at Microsoft.Phone.TaskModel.Interop.Task.FireOnChildTaskReturned(IntPtr returnDataPtr, UInt32 returnDataSize)
InnerException:
RestSharp теперь требует от вас установить BaseUrl RestClient как Uri. Кроме того, он больше не позволяет определять полный URL-адрес в RestRequest. Об этом сообщалось об ошибке, которая была закрыта комментариями, указывающими, что она была предназначена для установки базового URL-адреса в клиенте, тогда запросы будут относиться к этому клиенту для повторного использования. https://github.com/restsharp/RestSharp/issues/606.
Чтобы исправить ваш код, измените ваш запрос на относительный путь
RestRequest request = new RestRequest("shareyourtrip/addpost.php", Method.POST);
затем, после создания вашего клиента, установите базовый URL
RestClient restClient = new RestClient();
restClient.BaseUrl = new Uri("http://www.imanitv.com");
Других решений пока нет …